單例,在遊戲開發中是比較經常使用的功能,全局惟一,能夠在任何地方直接獲取,
省去了方法賦值 或者 屬性面板拖動的麻煩。
無論有沒調用,一開始就建立單例html
1 // Singleton.js 2 var Singleton = cc.Class({ 3 4 // 成員變量 5 name : "", 6 age : 0, 7 8 ctor () { 9 this.name = "Leovany"; 10 this.age = 20; 11 }, 12 statics: { 13 _instance: null 14 }, 15 16 printInfo(){ 17 cc.warn("name = " + this.name+",age = " + this.age); 18 } 19 }); 20 21 Singleton._instance = new Singleton(); 22 module.exports = Singleton;
1 // GameManager.js 2 // 引入單例類 3 var Singleton = require("Singleton"); 4 5 var GameManager = cc.Class({ 6 cc.warn(Singleton._instance.name); 7 Singleton._instance.printInfo(); 8 });
調用時才建立單例對象node
1 // Singleton.js 2 var Singleton = cc.Class({ 3 // 成員變量 4 name : "", 5 age : 0, 6 7 ctor () { 8 this.name = "Leovany"; 9 this.age = 20; 10 }, 11 12 13 printInfo(){ 14 cc.warn("name = " + this.name+",age = " + this.age); 15 } 16 }); 17 18 Singleton._instance = null; 19 Singleton.getInstance = function () { 20 if(!Singleton._instance){ 21 Singleton._instance = new Singleton(); 22 } 23 return Singleton._instance; 24 } 25 26 module.exports = Singleton;
1 // GameManager.js 2 // 引入單例類 3 var Singleton = require("Singleton"); 4 5 var GameManager = cc.Class({ 6 // 調用 7 cc.warn(Singleton.getInstance().name); 8 Singleton.getInstance().printInfo(); 9 });
1.新建一個 GameManager.js
ui
1 // 開頭必須 新建一個變量引用 var GameManager 2 var GameManager = cc.Class({ 3 extends: cc.Component, 4 properties: { 5 age : 20 6 }, 7 statics: { 8 _instance : null 9 }, 10 //最早進入地方 11 onLoad(){ 12 cc.warn(" ============== GameManager init" ); 13 GameManager._instance = this; 14 //設置幀率 15 cc.game.setFrameRate(60); 16 //設置該對象爲不銷燬 17 cc.game.addPersistRootNode(this.node); 18 } 19 }
2.調用地方
新建一個 Test.js
this
1 // 開頭必須require 引入單例 GameManager 2 var GameManager = require("GameManager"); 3 cc.Class({ 4 extends: cc.Component, 5 6 start () { 7 // 直接調用 8 // 輸出: GameManager name : GameManager<GameManager>,age = 20 9 cc.warn("GameManager name : "+ GameManager._instance.name 10 +",age = " + GameManager._instance.age ); 11 }, 12 13 });
var GameManager = cc.Class({...})
require
引入轉載: https://blog.csdn.net/leovnay/article/details/79272977spa