单例模式的实现Singleton和MonoSingleton
2024-09-06 03:41:02
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 普通单例基类
/// by:zdz
/// date:20220328
/// </summary>
/// <typeparam name="T"></typeparam>
public class Singleton<T> where T : new()
{
private static T m_instance;
private static readonly object locker = new object();
public static T Instance
{
get
{
lock (locker)
{
if (m_instance == null) m_instance = new T();
}
return m_instance;
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Mono单例基类
/// by:zdz
/// date:20220328
/// </summary>
/// <typeparam name="T"></typeparam>
public class MonoSingleton<T> : MonoBehaviour where T:Component
{
private static T m_instace;
private static readonly object lockObj=new object();
public static T Instance
{
get
{
lock (lockObj)
{
m_instace = FindObjectOfType<T>();
if (m_instace == null)
{
GameObject obj = new GameObject("TempObj");
m_instace = obj.AddComponent<T>();
}
}
return m_instace;
}
}
}
最新文章
- 数论专项测试——约数个数和(lucas的数论)
- eclipse工具背景色模板-程序员保护好自己的眼睛
- Java解析采集模块
- JS 删除字符串最后一个字符的几种方法
- ReorderList 的使用
- distri.lua重写开源手游服务器框架Survive
- Intent 传数据
- Android Failure [INSTALL_FAILED_OLDER_SDK]
- python调用java
- mysql5.6 zip版安装
- Nuget升级问题
- React 在服务端渲染的实现
- pyspider爬取TripAdvisor
- Qt Creator 编译测试 MQTT-C
- 使用Flask部署机器学习模型
- LINUX系统配置
- Java逐行写入字符串到文件
- 模拟ajax接口返回的数据
- SpingBoot —— RestTemplate的配置
- Go语言中Socket通信TCP服务端