官方文档:https://docs.cocos.com/creator/manual/zh/scripting/reference/class.html

前言

单例,在游戏开发中是比较常用的功能,全局唯一,可以在任何地方直接获取,
省去了方法赋值 或者 属性面板拖动的麻烦。
普通单例_饿汉模式

不管有没调用,一开始就创建单例

 // Singleton.js
var Singleton = cc.Class({ // 成员变量
name : "",
age : , ctor () {
this.name = "Leovany";
this.age = ;
},
statics: {
_instance: null
}, printInfo(){
cc.warn("name = " + this.name+",age = " + this.age);
}
}); Singleton._instance = new Singleton();
module.exports = Singleton;
 // GameManager.js
// 引入单例类
var Singleton = require("Singleton"); var GameManager = cc.Class({
cc.warn(Singleton._instance.name);
Singleton._instance.printInfo();
});
普通单例_饱汉模式

调用时才创建单例对象

 // Singleton.js
var Singleton = cc.Class({
// 成员变量
name : "",
age : , ctor () {
this.name = "Leovany";
this.age = ;
}, printInfo(){
cc.warn("name = " + this.name+",age = " + this.age);
}
}); Singleton._instance = null;
Singleton.getInstance = function () {
if(!Singleton._instance){
Singleton._instance = new Singleton();
}
return Singleton._instance;
} module.exports = Singleton;
 // GameManager.js
// 引入单例类
var Singleton = require("Singleton"); var GameManager = cc.Class({
// 调用
cc.warn(Singleton.getInstance().name);
Singleton.getInstance().printInfo();
});

单例组件

1.新建一个 GameManager.js

 // 开头必须 新建一个变量引用 var GameManager
var GameManager = cc.Class({
extends: cc.Component,
properties: {
age :
},
statics: {
_instance : null
},
//最先进入地方
onLoad(){
cc.warn(" ============== GameManager init" );
GameManager._instance = this;
//设置帧率
cc.game.setFrameRate();
//设置该对象为不销毁
cc.game.addPersistRootNode(this.node);
}
}

2.调用地方 
新建一个 Test.js

 // 开头必须require 引入单例 GameManager
var GameManager = require("GameManager");
cc.Class({
extends: cc.Component, start () {
// 直接调用
// 输出: GameManager name : GameManager<GameManager>,age = 20
cc.warn("GameManager name : "+ GameManager._instance.name
+",age = " + GameManager._instance.age );
}, });

特别强调

  • 单例组件类,开头必须要有变量引用 ,如var GameManager = cc.Class({...})
  • 调用单例组件的类,开头必须 require 引入

转载: https://blog.csdn.net/leovnay/article/details/79272977

学习笔记_Cocos Creator_继承组件单例的更多相关文章

  1. Cocos Creator_继承组件单例

    前言 单例,在游戏开发中是比较常用的功能,全局唯一,可以在任何地方直接获取, 省去了方法赋值 或者 属性面板拖动的麻烦. 普通单例_饿汉模式 不管有没调用,一开始就创建单例 1 // Singleto ...

  2. C#学习笔记——面向对象、面向组件以及类型基础

    C#学习笔记——面向对象.面向组件以及类型基础 目录 一 面向对象与面向组件 二 基元类型与 new 操作 三 值类型与引用类型 四 类型转换 五 相等性与同一性 六 对象哈希码 一 面向对象与面向组 ...

  3. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  4. Unity 游戏框架搭建 (十三) 无需继承的单例的模板

    之前的文章中介绍的Unity 游戏框架搭建 (二) 单例的模板和Unity 游戏框架搭建 (三) MonoBehaviour单例的模板有一些问题. 存在的问题: 只要继承了单例的模板就无法再继承其他的 ...

  5. amazeui学习笔记--css(常用组件12)--面板Panel

    amazeui学习笔记--css(常用组件12)--面板Panel 一.总结 1.面板基本样式:默认的 .am-panel 提供基本的阴影和边距,默认边框添加 .am-panel-default,内容 ...

  6. Flutter学习笔记(9)--组件Widget

    如需转载,请注明出处:Flutter学习笔记(9)--组件Widget 在Flutter中,所有的显示都是Widget,Widget是一切的基础,我们可以通过修改数据,再用setState设置数据(调 ...

  7. amazeui学习笔记--css(常用组件16)--文章页Article

    amazeui学习笔记--css(常用组件16)--文章页Article 一.总结 1.基本使用:文章内容页的排版样式,包括标题.文章元信息.分隔线等样式. .am-article 文章内容容器 .a ...

  8. amazeui学习笔记--css(常用组件15)--CSS动画Animation

    amazeui学习笔记--css(常用组件15)--CSS动画Animation 一.总结 1.css3动画封装:CSS3 动画封装,浏览器需支持 CSS3 动画. Class 描述 .am-anim ...

  9. amazeui学习笔记--css(常用组件14)--缩略图Thumbnail

    amazeui学习笔记--css(常用组件14)--缩略图Thumbnail 一.总结 1.基本样式:在 <img> 添加 .am-thumbnail 类:也可以在 <img> ...

随机推荐

  1. Linux中无权限使用sudo

    提示:$USER is not in the sudoers file. This incident will be reported. 解决方法: 切换到root用户,su 编辑sudo配置文件,v ...

  2. CF 1000

    水爆了...... 当然不是题目水,而是我水. 第一题,看完题目我稍微惊了一下,有点难度(并不). 开个map,先加后减,统计正数即可. 第二题,看完我冷汗就流下来了,有点难啊,这是B难度? 趴床上推 ...

  3. (转)Java 中正确使用 hashCode 和 equals 方法

    背景:最近在编写持久化对象时候遇到重写equals和hashCode方法的情况,对这两个方法的重写做一个总结. 链接:https://www.oschina.net/question/82993_75 ...

  4. CodeBlocks: 生成的exe文件自定义一个图标

    CodeBlocks生成的exe文件的图标默认是系统图标,如何自定义一个漂亮的小图标呢? 我是C菜鸟,平时只用CodeBlocks练习c,也不开发什么软件,这个问题就难倒我了. 到网上搜索了一下,发现 ...

  5. Mac挂载虚拟机的共享文件夹

    说明:sshfs可以帮助本地mac访问虚拟机上的共享文件夹,从而操作虚拟机上的文件夹非常方便 1.安装sshfs sudo port install sshfs 2.使用,指定远程目录,到本地某一目录 ...

  6. Problems you may meet

    一.正确安装sklearn却提示No module named 'sklearn.lda' It seems that you have installed a newer version of sk ...

  7. php循环删除文件夹和目录

    一定要注意文件夹中的两个目录---->   .(当前目录)  ..(上级目录) 需要对这两个目录进行过滤, 否则在删除或者遍历是会一直,对于..甚至会向你指定的文件夹的上级目录循环操作,删除重要 ...

  8. Servlet总结(一)

    一.Servlet了解 1.Servlet全称Java Servlet,是用java编写的独立于平台和协议的服务器端应用程序,运行于服务器,采用请求-响应模式提供Web服务 2.Servlet实现过程 ...

  9. 让富文本编辑器支持复制doc中多张图片直接粘贴上传

    Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧? 我希望打开文档doc直接复制粘贴到富文本编辑器,直接发布 感觉这个似乎很困难 ...

  10. npm webpack工具 (监听压缩等)

    压缩.监听变动自动打包,:开发后,js编译压缩及样式去空格等 $ webpack --config XXX.js //url使用另一份配置文件(比如webpack.config2.js)来打包 $ w ...