cocos creator 利用常驻节点跨场景保存和传递数据。

首先要知道官方给出的通过常驻节点进行场景资源管理和参数传递,下面直接给出:

引擎同时只会运行一个场景,当切换场景时,默认会将场景内所有节点和其他实例销毁。如果我们需要用一个组件控制所有场景的加载,或在场景之间传递参数数据,就需要将该组件所在节点标记为「常驻节点」,使它在场景切换时不被自动销毁,常驻内存。我们使用以下接口:

cc.game.addPersistRootNode(myNode);

上面的接口会将 myNode 变为常驻节点,这样挂在上面的组件都可以在场景之间持续作用,我们可以用这样的方法来储存玩家信息,或下一个场景初始化时需要的各种数据。

如果要取消一个节点的常驻属性:

cc.game.removePersistRootNode(myNode);

需要注意的是上面的 API 并不会立即销毁指定节点,只是将节点还原为可在场景切换时销毁的节点。

接下来要在场景A中创建一个空节点dataNode,如下:

在这里插入图片描述

要注意这个常驻节点要和一个scene中的唯一的Canvas同级,类型为普通空节点就可以了。

然后在场景A的脚本组件中挂载这个常驻节点,这样可以方便在脚本中调用节点;或者你也可以使用一些api获取这个节点。

以下脚本都是挂在Canvas上的。
在脚本中给这个常驻节点附上数据或方法都是可以的。场景A脚本参考如下:

cc.Class({
   
	extends: cc.Component,
	properties:{
   
		dataNode: cc.Node
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos Creator中设置常驻节点的音乐播放器,并且在切换场景后不停止音乐的播放,可以按照以下步骤进行操作: 1. 首先,在场景中创建一个空节点,用于作为常驻节点。你可以在场景编辑器中点击"Create Node"按钮,然后将其命名为"AudioManager"或者其他合适的名字。 2. 将音乐播放器组件添加常驻节点上。选中常驻节点,然后在属性检查器中点击"Add Component"按钮,选择"Audio Source"组件。这样,常驻节点就拥有了音乐播放功能。 3. 在脚本中控制音乐播放器的行为。你可以创建一个单例脚本,用于管理音乐播放器的状态和控制。在该脚本中,你可以添加一些方法,例如"playMusic"用于播放音乐,"stopMusic"用于停止音乐等。 ```javascript // AudioManager.js const { ccclass, property } = cc._decorator; @ccclass export default class AudioManager extends cc.Component { @property(cc.AudioClip) musicClip: cc.AudioClip = null; private static instance: AudioManager = null; onLoad() { if (AudioManager.instance === null) { AudioManager.instance = this; cc.game.addPersistRootNode(this.node); this.playMusic(); } else { this.node.destroy(); } } playMusic() { cc.audioEngine.playMusic(this.musicClip, true); } stopMusic() { cc.audioEngine.stopMusic(); } } ``` 4. 在每个场景中使用常驻节点的音乐播放器。在你的每个场景中,将常驻节点的音乐播放器组件添加到需要播放音乐的节点上。可以在场景加载完成后的脚本中,通过以下方式获取常驻节点并使用其方法控制音乐播放: ```javascript // YourScene.js const { ccclass, property } = cc._decorator; @ccclass export default class YourScene extends cc.Component { private audioManager: AudioManager = null; onLoad() { this.audioManager = cc.find("AudioManager").getComponent(AudioManager); } playMusic() { this.audioManager.playMusic(); } stopMusic() { this.audioManager.stopMusic(); } } ``` 这样,无论切换到哪个场景常驻节点上的音乐播放器都会继续播放音乐。你可以在需要的地方调用`playMusic`和`stopMusic`方法来控制音乐的播放和停止。记得在切换场景时不要销毁常驻节点,否则音乐会停止播放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值