官方文档: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. 搭建Spring4+Spring MVC web工程的最佳实践

    Spring是个非常非常非常优秀的java框架,主要是用它的IOC容器帮我们依赖注入和管理一些程序中的Bean组件,实现低耦合关联,最终提高系统可扩展性和可维护性,用它来辅助我们构建web工程将会感觉 ...

  2. SVM的两个参数 C 和 gamma

    SVM模型有两个非常重要的参数C与gamma.其中 C是惩罚系数,即对误差的宽容度.c越高,说明越不能容忍出现误差,容易过拟合.C越小,容易欠拟合.C过大或过小,泛化能力变差 gamma是选择RBF函 ...

  3. MYSQL增加tmp_table_size 的操作

    最近有张表经常损坏,修复后还是会出现损坏. dba分析有可能是临时表空间太小导致的.以下是设置临时表空间大小的操作. 设置 tmp_table_size的大小 mysql> set global ...

  4. python---自定义字段验证

    各个字段类,含正则和验证方法 #字段类 class IPField: REGULAR = "^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4] ...

  5. 如何下载网易云音乐APP里的MV和短视频?

    本人:网易云音乐死粉,朋友圈大多都用的是云音乐,因为推荐功能牛逼 然后:发现云音乐APP里越来越多吸引我的短视频,经常看到好的就想保存到相册,然后微信发给朋友 但是:不知道怎么下载网易云音乐的短视频, ...

  6. 关于Java形参和实参的理解

    源码地址:https://github.com/mynawang/javabasic-summary/tree/master/chapter01 1.方法的形参中,java的基本数据类型是传值调用,对 ...

  7. vue-router源码分析

    上一篇我们写了前端路由,这几天比较闲,抽空研究了vue.js官方路由的vue-router的实现. 本文主要是以vue-router2.7.0(https://github.com/vuejs/vue ...

  8. spring boot(十):定时任务

    springboot默认已经帮我们实行了,只需要添加相应的注解就可以实现. 1.pom包配置 <dependency> <groupId>org.springframework ...

  9. ScrollView match_parent不起作用

    昨天在项目中遇到一个以前没遇到过的问题,就是ScrollView的match_parent不起作用了.所以记录一下 开始的时候我的布局是: <ScrollView android:layout_ ...

  10. Selenium自动化Page模式(Python)

    Selenium是当前主流的web自动化工具,提供了多种浏览器的支持(Chrome,Firefox, IE等等),当然大家也可以用自己喜欢的语言(Java,C#,Python等)来写用例,很容易上手. ...