官方文档: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. [poj3046][Ant counting数蚂蚁]

    题目链接 http://noi.openjudge.cn/ch0206/9289/ 描述 Bessie was poking around the ant hill one day watching ...

  2. 使用babel将ES6编译成ES5

    现在ES6已经非常成熟了,我的需求很明确,就是只需要将ES6编译成ES5. 项目目录为 借鉴的博客链接为https://blog.csdn.net/suwu150/article/details/77 ...

  3. c输出格式

    #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { //取整 printf( ...

  4. 集合类(常见的集合类:Collection、List、Set、ArrayList、linkedList、Vector、HashSet、TreeSet)

    一.集合类 定义:一种为了对多个对象进行操作而进行存储的方式. 1.与数组的区别: 数组:可以存储对象,也可以存储基本数据类型,但是一次只能存储一种类型,数组长度固定. 集合:只能存储对象,长度可变, ...

  5. Centos7.2安装搜狗拼音

    方法一: Fedora 19/20/21/rawhide 使用以下命令添加源: # yum install dnf-plugins-core # dnf copr enable mosquito/my ...

  6. 源码研究:php变量

    一:php中的变量类型 1.标量类型:布尔型 bool,整型 int,浮点型 float,字符串型 string2.复杂类型:数组 array,对象 object3.特殊类型:NULL,资源 reso ...

  7. centos7使用kubeadm配置高可用k8s集群

    CountingStars_ 关注 2018.08.12 09:06* 字数 464 阅读 88评论 0喜欢 0 简介 使用kubeadm配置多master节点,实现高可用. 安装 实验环境说明 实验 ...

  8. C#控件及常用设计整理

    1.窗体  1.常用属性  (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体.  (2) WindowState属性:  用来获取或设置窗体的窗口状态. 取值有三 ...

  9. Spark记录-SparkSQL相关学习

    $spark-sql  --help  查看帮助命令 $设置任务个数,在这里修改为20个 spark-sql>SET spark.sql.shuffle.partitions=20; $选择数据 ...

  10. centos文件与权限

    切换目录 cd:切换目录. 当我们需要进入到别的目录的时候,就需要使用到cd这个命令. ‘ cd这个命令主要有以下几种使用方式; cd [~]:进入当前用户的家目录,比如我是fuwh这个用户登陆的,则 ...