Cocos引擎,跨场景传递数据

1,520 阅读1分钟

问题背景

利用Cocos引擎开发的小游戏,在游戏结束后,从游戏场景切换到结算场景,同时把游戏场景内统计的积分传入结算场景。

解决方法

提供两种传递的方式:

1 .使用常驻节点

cc.game.addPersistRootNode(MyNode); Cocos引擎在切换场景时,默认清除此场景下的所有节点和实例,但是通过调用addPersistRootNode方法将MyNode设置为常驻节点,即Mynode不会随着场景的销毁而销毁。

然后在新场景中通过cc.director.getScene().getChildByName("MyNodeName");来获取MyNode这个节点。

特别注意

  1. MyNode节点必须在根结点之下,不能在Canvas下面,否则还会销毁
  2. cc.game.removePersistRootNode(myNode)方法可以取消这个节点的常驻属性,注意是取消它的常驻属性的,不是立刻删除,会在下一次切场景时删除。

2. 通过模块访问

新建一个全局Global.js脚本,在最外层写如下代码:

module.exports = {
    data : null
};

这样你就可以在其他脚本中通过以下代码来访问data的数据了。

var global = require("Global")
var data = global.data

记录问题,加深理解。