博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例实现方式
阅读量:4485 次
发布时间:2019-06-08

本文共 1887 字,大约阅读时间需要 6 分钟。

游戏中很多地方,都需要用到单例模式,虽然单例实现代码不多,但是每一个脚本都重复写的话,也相当的麻烦。

我们可以这样,写一个泛型的父类,来实现这个单例模式,然后其余的只要继承这个父类,自然就有 1 public class HNSingleton<T> where T :class

2     { 3  4         #region 私有变量 5  6         private static T g_instance;                                                // 静态实例句柄 7         private static readonly object g_instanceLock = new object();               // 锁,控制多线程冲突 8  9         #endregion10 11         #region 公开属性12 13         /// 14         /// 获取单例15         /// 16         /// 
即单例模式中所谓的全局唯一公共访问点
17 public static T Instance18 {19 get20 {21 // 此处双重检测,确保多线程无冲突22 if (g_instance == null)23 {24 lock (g_instanceLock)25 {26 if (g_instance == null)27 {28 g_instance = (T)System.Activator.CreateInstance(typeof(T), true);29 System.Console.WriteLine("hnu3d.........unity......create instance:" + g_instance.ToString());30 31 }32 }33 }34 35 36 37 return g_instance;38 }39 }40 41 42 43 #endregion44 45 46 47 #region 销毁对象48 49 public void DelMe()50 {51 // 此处双重检测,确保多线程无冲突52 if (g_instance != null)53 {54 lock (g_instanceLock)55 {56 if (g_instance != null)57 { 58 HNLogger.Log ("..delet---:" + g_instance.ToString());59 g_instance = null;60 }61 }62 }63 64 }65 66 68 }

当其它脚本需要单例模式时,只需要继承该脚本即可实现单例模式了。

转载于:https://www.cnblogs.com/leiGameDesigner/p/6617034.html

你可能感兴趣的文章
11号团队-团队任务5:项目总结会
查看>>
CPU运行原理
查看>>
UVA529 Addition Chains
查看>>
django项目部署在Apache服务器中,静态文件路径的注意点
查看>>
Unity检查更新
查看>>
转:objective-c 协议和委托
查看>>
day 55 jQuery 之事件 绑定等
查看>>
前端开源项目周报0221
查看>>
构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock
查看>>
Oracle记录(一)Oracle简介与安装
查看>>
DHTML5(控件动态效果综合应用与表单校验)
查看>>
Oracle Enterprise Manager 12c 新特性:实时Real-Time Addm
查看>>
同时安装office2016与visio2016的实现过程
查看>>
vtk类之vtkShrinkFilter :收缩构成对其质心任意数据集的单元格,返回vtkUnstructuredGrid数据集...
查看>>
在此记录一下SharpGL最初创建的程序
查看>>
View Controller Programming Guide for iOS---(六)---Responding to Display-Related Notifications
查看>>
redis数据操作笔记
查看>>
委托的匿名方法
查看>>
五种在家观看3D电影的解决方案
查看>>
安装windowbuilder错误一例
查看>>