简洁

在游戏开发中会经常使用到单例模式,什么时候会用到单例模式呢?有一些数据会在整个游戏(程序)生命中一直持续到游戏结束的数据。例如:玩家数据

代码

提供两种单例:

  1. C#中的单例。
  2. Unity3D继承MonoBehaviour的单例。
using UnityEngine;namespace Singleton
{public abstract class Singleton<T> where T : new(){static object _lock = new object();private static T _instance;public static T Instance{get{if (_instance == null){lock (_lock){if (_instance == null){_instance = new T();}}}return _instance;}}public virtual void Release(){_instance = default(T);}}public class SingletonMono<T> : MonoBehaviour where T : Component{private static bool _isApplicationQuit = false;private static T _instance;public bool IsLive{get{if (_instance == null){return false;}return !_isApplicationQuit;}}public static T Instance{get{if (_instance == null && !_isApplicationQuit){_instance = FindObjectOfType(typeof(T)) as T;if (_instance == null){GameObject obj = new GameObject();obj.name = typeof(T).Name.ToString();_instance = (T)obj.AddComponent(typeof(T));}if (Application.isPlaying){GameObject.DontDestroyOnLoad(_instance);}}return _instance;}}protected virtual void OnApplicationQuit(){_isApplicationQuit = true;}protected virtual void OnDestory(){_isApplicationQuit = true;_instance = null;}}
}

Unity3D 单例模式相关推荐

  1. 在Unity内使用对象池并实现线程安全的单例模式

    用对象池管理游戏物体 对象池要实现的是对对象的复用,就好像是把一堆东西放在一个地方,用的时候就拿一个出去,再用就再拿一个,用完了再放回来.在Unity中可以用SetActive方法将游戏物体关闭与开启 ...

  2. 游戏物体复用:对象池(以Unity3D为例)

    需要解决/优化的问题: 在Unity3D中,实例化物体和销毁物体是都非常消耗性能的,小项目可能没问题的,但是一旦有大量的物体在短时间内需要销毁或者创建,那么游戏就会变得巨卡,如果是手游你的手机还会变烫 ...

  3. unity3d api 中文文档_unity3D游戏开发工程师完整简历范文

    基本信息 姓名:七分简历 年龄:23岁 电话:131****7089 邮箱:689262****@qq.com 经验:1年 意向:unity3D游戏开发工程师 教育背景 时间:2011-09 - 20 ...

  4. Unity3D接入Android第三方SDK流程

    目录 一.SDK调用Unity3D 二.Unity3D调用SDK 1.在Unity中新建一个脚本,调用MySDkPlatform中的方法 四.打包 1.方式一:SDK打成plugins给Unity(u ...

  5. unity3d俄罗斯方块源码教程+源码和程序下载

    小时候,大家都应玩过或听说过<俄罗斯方块>,它是红白机,掌机等一些电子设备中最常见的一款游戏.而随着时代的发展,信息的进步,游戏画面从简单的黑白方块到彩色方块,游戏的玩法机制从最简单的消方 ...

  6. Unity3D优化技巧系列七

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  7. 【Unity3D插件】EasyAR插件分享《AR使用及开发案例》

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 这篇文章介绍如何使用EasyAR.unitypackage配置EasyAR ...

  8. Unity3D游戏编程-鼠标打飞碟

    Unity3D游戏编程-鼠标打飞碟 文章目录 Unity3D游戏编程-鼠标打飞碟 一.作业要求 二.项目配置 三.项目演示 视频演示 项目下载 文字说明 项目截图 四.前置内容 MVC模式 动作管理器 ...

  9. 《大话设计模式(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+设计模式+GoF+UML+单例模式+观察者模式+抽象工厂+代理模式+框架编程+立钻哥哥++OK+)

    <大话设计模式(C#实现)> 版本 作者 参与者 完成日期 备注 YanlzFramework_GoF_V01_1.0 严立钻 2020.02.10 ##<大话设计模式(C#实现)& ...

最新文章

  1. Java学习总结:55(偶对象保存:Map接口)
  2. [UI]抽屉菜单DrawerLayout分析(二)
  3. python基础语法手册format-Python format 格式化函数
  4. Java并发:线程池详解(ThreadPoolExecutor)
  5. java如何运行一个任务_如何每天从Java运行任务?
  6. windows2003安全设置
  7. 【转载保存】lucene优秀文章整理
  8. Spring笔记2——Spring中Bean的装配
  9. 概率图模型(PGM) —— 贝叶斯网络(Bayesian Network)
  10. python revit二次开发_Revit怎么二次开发?Revit开发问题汇总
  11. linux root权限_怎样在Linux内核中埋炸弹获取root权限lt;2/2gt;终结篇
  12. H5游戏开发框架排名
  13. 基于海康威视IP摄像头和虹软的MFC人脸识别系统开发教程
  14. 快速排序(c语言实现)
  15. cesium api 学习之旋转角 heading(yaw)、pitch、roll
  16. 网易公开课“Programming Paradigms” 笔记
  17. In-Place Scene Labelling and Understanding with Implicit Scene Representation
  18. LiveCharts
  19. qt自定义控件-柱状刻度尺
  20. 计算机启动时蓝屏后自动重起,升级Win10系统之后一开机就蓝屏且电脑不断重启怎么解决?...

热门文章

  1. 微信自动关闭内置浏览器页面,返回公众号窗口 WeixinJSBridge.call('closeWindow')
  2. iometer测试工具
  3. 对象创建方法,对象的内存分配,对象的访问定位
  4. sqlserver ssms ctrl+e快捷键问题
  5. 伪类的使用之如何在一段文字前面添加一个点
  6. [Effective JavaScript 笔记]第29条:避免使用非标准的栈检查属性
  7. ZOJ 2675 Little Mammoth(计算几何)
  8. 监测磁盘文件是否被修改程序
  9. 详解Python中的下划线
  10. noclobber属性