博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习笔记_Cocos Creator_继承组件单例
阅读量:5876 次
发布时间:2019-06-19

本文共 2601 字,大约阅读时间需要 8 分钟。

官方文档:https://docs.cocos.com/creator/manual/zh/scripting/reference/class.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: null14     },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 });
普通单例_饱汉模式

调用时才创建单例对象

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

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

1 // 开头必须require 引入单例 GameManager 2 var GameManager = require("GameManager"); 3 cc.Class({ 4     extends: cc.Component, 5  6     start () { 7        // 直接调用 8        // 输出: GameManager name : 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/79272977

转载于:https://www.cnblogs.com/porter/p/10032244.html

你可能感兴趣的文章
Firewalld的概念与使用
查看>>
React项目技术栈
查看>>
项目线程安全
查看>>
ElementUI Table组件,如何在多页数据下勾选多行
查看>>
什么是Scala Scala如何学习和入门之我的个人学习经验以及相关实战
查看>>
elemetui中好用的小技巧
查看>>
Android Binder的使用
查看>>
Cocos2dx源码记录(8) CCMaterial, CCTechnique,CCPass
查看>>
springmvc+mybatis+restful+webservice 分布式架构
查看>>
Oracle 面试题总结
查看>>
Flutter RichText支持图片显示和自定义图片效果
查看>>
微软开发人工智能系统 在吃豆人游戏中获满分
查看>>
Mint UI loadmore禁止下拉
查看>>
Vue下拉刷新组件
查看>>
python机器学习实战(四)
查看>>
智能合约的一种设计结构
查看>>
npm install --save 和 --save-dev的区别
查看>>
使用nvm管理node与npm版本
查看>>
死磕 java同步系列之自己动手写一个锁Lock
查看>>
让函式库更容易移植 JetBrains推出Kotlin 1.3
查看>>