CocosCreator 面试题(十三)说说Cocos Creator常驻节点

简介: CocosCreator 面试题(十三)说说Cocos Creator常驻节点

Cocos Creator中,常驻节点(Persist Node)是一种特殊的节点,它在场景切换时保持不销毁,始终存在于游戏运行的整个生命周期中。常驻节点可以用于保存全局的数据、管理全局的功能或者在场景切换时保持一些节点的状态。


  • 全局数据管理
    例如游戏的配置信息、玩家的状态、音频管理器等。通过在常驻节点上添加相应的组件,可以在整个游戏中方便地访问和修改这些数据。
  • 跨场景数据传递
    常驻节点可以作为数据传递的桥梁,将数据从一个场景传递到另一个场景。
  • 全局功能管理
    常驻节点还可以用于管理全局的功能,例如音频管理、事件监听、网络请求等。


现在详细举例关于常驻节点的使用方法和注意事项。

一、常驻节点使用方法

假设我们正在开发一个简单的游戏,其中包含多个场景,包括开始界面、游戏关卡界面和结束界面。我们希望在游戏的整个运行过程中都能够访问和修改玩家的分数数据。


1、创建常驻节点

可以通过在层级管理器中创建一个空节点,并将其设置为常驻节点,在常驻节点上可以添加脚本组件,用于管理全局的数据和逻辑。

设置为常驻节点

director.addPersistRootNode(myNode);

取消节点的常驻属性

director.removePersistRootNode(myNode);


2、添加脚本组件

例如:在常驻节点上添加一个脚本组件,用于管理玩家的分数数据。

// ScoreManager.ts
import { _decorator, Component } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('ScoreManager')
export class ScoreManager extends Component {
  private score: number = 0;
  public increaseScore(points: number): void {
    this.score += points;
  }
  public getScore(): number {
    return this.score;
  }
}


3、使用常驻节点中的数据

在需要访问和修改玩家分数的地方,可以通过获取常驻节点并使用其中的组件来操作分数数据。

// GameLevel.ts
import { _decorator, Component, Label } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('GameLevel')
export class GameLevel extends Component {
  @property(Label)
  private scoreLabel: Label = null;
  private scoreManager: ScoreManager = null;
  start() {
    // 获取常驻节点
    const persistNode = cc.find('PersistNode');
    this.scoreManager = persistNode.getComponent(ScoreManager);
  }
  updateScore(points: number): void {
    // 更新分数
    this.scoreManager.increaseScore(points);
    // 更新分数显示
    this.scoreLabel.string = this.scoreManager.getScore().toString();
  }
}
```


二、常驻节点使用注意事项

1、目标节点必须为位于层级的根节点,否则设置无效

2、常驻节点是全局存在的,因此在使用时要注意避免滥用,合理规划和管理节点的数量和功能

3、常驻节点中的资源和数据需要谨慎管理,避免内存泄漏和数据冗余

4、常驻节点的生命周期与游戏运行的整个生命周期一致,当游戏退出时才会被销毁,因此需要确保在适当的时机进行资源释放和清理。

总之,常驻节点是Cocos Creator中一种特殊的节点,它在游戏运行期间始终存在,并可以用于保存全局数据、管理全局功能以及在场景切换时保持节点状态。合理使用常驻节点可以提高开发效率和管理灵活性。



相关文章
|
5月前
|
XML 存储 JSON
CocosCreator 面试题(十五)Cocos Creator如何内置protobuf JS版本?
CocosCreator 面试题(十五)Cocos Creator如何内置protobuf JS版本?
157 0
|
5月前
|
前端开发
CocosCreator 面试题(九)什么是异步加载资源
CocosCreator 面试题(九)什么是异步加载资源
160 0
|
12月前
|
JavaScript 安全 编译器
CocosCreator 面试题(六)什么是泛型,有什么作用?
CocosCreator 面试题(六)什么是泛型,有什么作用?
124 0
|
12月前
|
JavaScript 前端开发
CocosCreator 面试题(二)JavaScript中的prototype的理解
CocosCreator 面试题(二)JavaScript中的prototype的理解
205 0
|
5月前
CocosCreator 面试题(十六)Cocos Creator 节点池的基本原理是什么?如何使用?
CocosCreator 面试题(十六)Cocos Creator 节点池的基本原理是什么?如何使用?
337 0
|
5月前
|
安全 网络安全 数据安全/隐私保护
CocosCreator 面试题(十四)Cocos Creator WebSocket 、Socket.IO分别是什么?
CocosCreator 面试题(十四)Cocos Creator WebSocket 、Socket.IO分别是什么?
286 0
|
5月前
CocosCreator 面试题(二十) Cocos creator 如何实现一个置灰Shader?
CocosCreator 面试题(二十) Cocos creator 如何实现一个置灰Shader?
193 0
|
5月前
|
计算机视觉
CocosCreator 面试题(十九) Cocos Creator 材质 shader 分别是什么?
CocosCreator 面试题(十九) Cocos Creator 材质 shader 分别是什么?
206 0
|
5月前
|
UED
CocosCreator 面试题(十八)Cocos Creator 图集打包有什么意义 ,我们一般在项目里面怎么规划
CocosCreator 面试题(十八)Cocos Creator 图集打包有什么意义 ,我们一般在项目里面怎么规划
185 0
|
5月前
|
编解码
CocosCreator 面试题(十七)Cocos creator 固定宽度与固定高度的底层原理是什么?Cocos creator是如何做适配的?
CocosCreator 面试题(十七)Cocos creator 固定宽度与固定高度的底层原理是什么?Cocos creator是如何做适配的?
241 0
下一篇
无影云桌面