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实现单例组件
问题背景 在工作中遇到了这样一个场景,写了个通用的弹窗组件,却在同一个页面中多次使用了该组件.当点击打开弹窗时,可想而知,一次性打开了多个弹窗,而业务需求只需要打开一个. 我个人在解决问题过程中的一些 ...
随机推荐
- org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse
跑sparkPis示例程序 [root@node01 bin]# ./spark-submit --master spark://node01:7077 --class org.apache.spar ...
- Redis数据类型Hash
Redis的Hash有点像一个对象(object),一个Hash里面可以存多个Key-Value对作为它的field,所以它通常可以用来表示对象.Hash里面能存放的值也能作为String类型来存储, ...
- tensorflow会话控制-【老鱼学tensorflow】
在tensorflow中,当定义好结构后,就要通过tf.session()来建立运行时的会话. 本例子应该不难理解,我们用tensorflow来计算一下一个1行2列的矩阵和2行1列矩阵的乘积: imp ...
- 即将上线的Imcash是何方神圣?
区块链的诞生,让数字资产来到这个时代,每个人的财产分布又多了一种十分重要的选择. 当下每个人最需要的就是一款优秀的数字资产管理平台,目前市面上各种平台层出不穷,在线管理.离线管理.全节点钱包.轻钱包. ...
- Resource Allocation of Yarn
关键词:yarn 资源分配 mapreduce spark 简要指南 适合不想看太多原理细节直接上手用的人. 基本原则: container分配的内存不等于机器实际用掉的内存.NM给container ...
- 分布式mongodb分片集群
本博客先简单介绍mongodb入门以及单实例以及mongodb的主从(主从官网是不提倡用的,原因后续介绍),副本集,分片. 第一:nosql介绍: 数据库分为关系型数据库与非关系型数据库,及具代表性的 ...
- Mybatis_3.基于注解的增删改查
1.实体类User.java public class User { private int id; private String name; private int age; //getter.se ...
- nginx/php的redis模块扩展
redis模块介绍 redis2-nginx-module 可以实现 Nginx 以非阻塞方式直接防问远方的 Redis 服务,可以启用强大的 Redis 连接池功能,进而实现更多的连接与更快速的访问 ...
- [LeetCode] Shortest Distance to a Character 到字符的最短距离
Given a string S and a character C, return an array of integers representing the shortest distance f ...
- PHP 常用设计模式 (转载)
1.单例模式 单例模式顾名思义,就是只有一个实例.作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的要点有三个: 一是某个类只能有一个实例: ...