Cocos Creator两个类相互引用(调用)


如果两个类相互引用,脚本加载阶段就会出现循环引用,循环引用将导致脚本加载出错:
///////////Game.js
var Item = require("Item");
var Game = cc.Class({
properties: {
item: {
default: null,
type: Item //用 Item 对象
}
}
});
module.exports = Game;

//////////Item.js
var Game = require("Game");
var Item = cc.Class({
properties: {
game: {
default: null,
type: Game //用 Game 对象
}
}
});
module.exports = Item;

上面两个脚本加载时,由于它们在 require 的过程中形成了闭环,因此加载会出现循环引用的错误,循环引用时 type 就会变为 undefined。
因此我们提倡使用以下的属性定义方式:

/////////Game.js
var Game = cc.Class({
properties: () => ({ //箭头函数在脚本加载中不会同步执行,而是在所有脚本加载成功后才调用。
item: {
default: null,
type: require("Item")
}
})
});
module.exports = Game;

////////Item.js
var Item = cc.Class({
properties: () => ({
game: {
default: null,
type: require("Game")
}
})
});
module.exports = Item;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM