Cocos Creator_继承组件单例
前言
单例,在游戏开发中是比较常用的功能,全局唯一,可以在任何地方直接获取,
省去了方法赋值 或者 属性面板拖动的麻烦。
普通单例_饿汉模式
不管有没调用,一开始就创建单例
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 });
普通单例_饱汉模式
调用时才创建单例对象
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<GameManager>,age = 20
9 cc.warn("GameManager name : "+ GameManager._instance.name
10 +",age = " + GameManager._instance.age );
11 },
12
13 });
特别强调
- 单例组件类,开头必须要有变量引用 ,如
var GameManager = cc.Class({...}) - 调用单例组件的类,开头必须
require引入
Cocos Creator_继承组件单例的更多相关文章
- 学习笔记_Cocos Creator_继承组件单例
官方文档:https://docs.cocos.com/creator/manual/zh/scripting/reference/class.html 前言 单例,在游戏开发中是比较常用的功能,全局 ...
- Unity 游戏框架搭建 (十三) 无需继承的单例的模板
之前的文章中介绍的Unity 游戏框架搭建 (二) 单例的模板和Unity 游戏框架搭建 (三) MonoBehaviour单例的模板有一些问题. 存在的问题: 只要继承了单例的模板就无法再继承其他的 ...
- Lua面向对象----类、继承、多继承、单例的实现
(本文转载)学习之用,侵权立删! 原文地址 http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&a ...
- C++可继承的单例基类模板
目录 一.介绍 二.代码 三.关键处 五.参考资料 一.介绍 最近在写一个项目,其中用到好几个单例,类本身的设计不是很复杂,但是如果每个都写一遍单例又觉得有点冗余:所以查资料写了一个单例基类模板,只要 ...
- 类 __new__方法实现单例
继承了单例的类,子类也是单例模式
- 我心中的核心组件(可插拔的AOP)~第十五回 我的日志组件Logger.Core(策略,模版方法,工厂,单例等模式的使用)
回到目录 之前的讲过两篇关于日志组件的文章,分别是<第一回 日志记录组件之自主的Vlog>和<第三回 日志记录组件之log4net>,而今天主要说一下我自己开发的另一种日志 ...
- JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖
JAVA之旅(六)--单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 java也越来越深入了,大家加油吧!咱们一步步来 一.单例设计模式 什么是设计模式? JAVA当中有 ...
- 008单例、继承、final
内容:单例,类继承,final #################################################################################### ...
- React实现单例组件
问题背景 在工作中遇到了这样一个场景,写了个通用的弹窗组件,却在同一个页面中多次使用了该组件.当点击打开弹窗时,可想而知,一次性打开了多个弹窗,而业务需求只需要打开一个. 我个人在解决问题过程中的一些 ...
随机推荐
- 阿里云服务器端配置TensorFlow & jupyter
在阿里云上搭建爬取某信的公众号文章的程序时,发现需要验证码验证,技穷之后考虑做一个验证码识别程序,所以开始在服务器上搭建机器学习平台,背景,服务器上已经有其他应用在跑着了,所以不想停服,初始环境:ce ...
- PHPstorm远程连接侧边栏怎么打开,远程数据库侧边栏怎么打开
- CSS文字垂直居中的一些问题
说到CSS文字垂直居中,很多初学者都喜欢用调整行高等于div高度的方式来达到效果, div { height:30px; line-height:30px; } 但其实这么做会遇到一个问题:多行文本溢 ...
- js一些代码
1判断金额正则 var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; var money ...
- AJAX-快速上手(四个步骤)
## 1, ajax ajax是使用js进行在不重新加载页面的情况下,使得页面局部刷新.而传统的页面加载即需要,重新加载整个页面.它的加载是异步进行的,即在加载的同时,页面的其他部分可以正常使用,不会 ...
- Assembly.LoadFrom加载程序集无法释放资源的解决方案
下面此方法加载程序集会导致程序集一直被占用 Assembly asm = Assembly.LoadFrom(dllPath); 解决方案: //通过此方法读取可以解决dll被占用问题 byte[] ...
- 数据仓库 - 2.数据仓库设计思路及ETL设计思路
一.数据仓库构建思想 构造数据仓库有两种方式:一是自上而下,一是自下而上. Bill Inmon先生推崇“自上而下”的方式,即一个企业建立唯一的数据中心,就像一个数据的仓库,其中数据是经过整合.经过清 ...
- kafka创建topics 错误: 找不到或无法加载主类 Files\Java\jdk1.7.0_80\lib;C:\Program
解决方案如下: 在kafka安装目录中找到bin\windows目录中的kafka-run-class.bat找到%CLASSPATH%为其加上双引号
- jquery全选 不全选
<input type="checkbox" id="check">点击 <input type="checkbox" c ...
- 20175320 2018-2019-2 《Java程序设计》第7周学习总结
20175320 2018-2019-2 <Java程序设计>第7周学习总结 教材学习内容总结 本周学习了教材的第八章的内容,在这章中介绍了常用的实用类,着重讲了如何利用String类.S ...