问题背景
利用Cocos引擎开发的小游戏,在游戏结束后,从游戏场景切换到结算场景,同时把游戏场景内统计的积分传入结算场景。
解决方法
提供两种传递的方式:
1 .使用常驻节点
cc.game.addPersistRootNode(MyNode);
Cocos引擎在切换场景时,默认清除此场景下的所有节点和实例,但是通过调用addPersistRootNode方法将MyNode设置为常驻节点,即Mynode不会随着场景的销毁而销毁。
然后在新场景中通过cc.director.getScene().getChildByName("MyNodeName");来获取MyNode这个节点。
特别注意
- MyNode节点必须在根结点之下,不能在Canvas下面,否则还会销毁
cc.game.removePersistRootNode(myNode)方法可以取消这个节点的常驻属性,注意是取消它的常驻属性的,不是立刻删除,会在下一次切场景时删除。
2. 通过模块访问
新建一个全局Global.js脚本,在最外层写如下代码:
module.exports = {
data : null
};
这样你就可以在其他脚本中通过以下代码来访问data的数据了。
var global = require("Global")
var data = global.data
记录问题,加深理解。