C#/Unity3D 单例模板(单例属性模板)

news/2024/9/22 14:40:57/

C# 单例单例属性

不做过多解释,非面向大众
在这里插入图片描述

using System;
namespace EasyAVG
{public static class SingletonProperty<T> where T : class{private static readonly object locker = new object();private volatile static T instance = null;public static T Instance{get{if (instance == null){lock (locker){if (instance == null){instance = Activator.CreateInstance<T>();}}}return instance;}}public static void Unload() => instance = null;public static void Reload() => instance = Activator.CreateInstance<T>();}}

namespace EasyAVG
{public abstract class Singleton<T> where T : Singleton<T>{public static T Instance => SingletonProperty<T>.Instance;protected Singleton() { }public static void Unload() => SingletonProperty<T>.Unload();public static void Reload() => SingletonProperty<T>.Reload();}}

Unity Mono单例 /单例属性模板

using UnityEngine;
namespace EasyAVG
{public static class MonoSingletonProperty<T> where T : MonoBehaviour{private static T instance = null;public static T Instance{get{if (instance == null) InitializeAfterSceneLoad();return instance;}}public static void InitializeAfterSceneLoad(){if (instance != null) return;GameObject container = new GameObject(typeof(T).Name);UnityEngine.Object.DontDestroyOnLoad(container);instance = container.AddComponent<T>();}public static void Unload(){UnityEngine.Object.Destroy(instance.gameObject);instance = null;}public static void Reload(){Unload();InitializeAfterSceneLoad();}}}
using UnityEngine;namespace EasyAVG
{public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>{protected MonoSingleton() { }public static T Instance => MonoSingletonProperty<T>.Instance;public static void SingletonInitializeAfterSceneLoad() => MonoSingletonProperty<T>.InitializeAfterSceneLoad();public static void Unload() => MonoSingletonProperty<T>.Unload();public static void Reload() => MonoSingletonProperty<T>.Reload();}
}

http://www.ppmy.cn/news/1124579.html

相关文章

nssm部署jar包

nssm部署jar包 1、软件下载 官方传送门 csdn下载地址 2、安装服务 F: cd F:\服务启动目录 set JAVA_HOMEF:\Program Files\Java\jdk1.8.0_181 set CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\tools.jar; set Path%JAVA_HOME%\bin; java -Dfile.encodingutf-8 -…

数据结构之【动态数组】

1. 线性表 概念&#xff1a;线性表是n个具有相同特性的数据元素的有限序列。 常见的线性表有&#xff1a;数组、链表、栈、队列、字符串…… 特点&#xff1a; 保存在这个结构中的元素都是相同的数据类型。元素之间线性排列&#xff0c;元素之间在逻辑上是连续的。 线性表…

德大黄鱼开捕 年产量20万吨 京东超市多举措保障黄鱼品质

作为“中国大黄鱼之都”&#xff0c;宁德大黄鱼占全国大黄鱼总产值产量均在90%以上。有关方面预计&#xff0c;今年全年宁德大黄鱼产量达20万吨&#xff0c;年增产10%&#xff0c;直接经济产值超百亿元。 宁德大黄鱼开捕活动&#xff0c;由宁德市政府、宁德渔业协会、京东超市…

Lua学习笔记:require非.lua拓展名的文件

前言 本篇在讲什么 Lua的require相关的内容 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449; ♠…

算法与数据结构-堆

文章目录 什么是堆如何实现一个堆&#xff1f;如何基于堆实现排序&#xff1f;1. 建堆2. 排序 什么是堆 堆是一种特殊的树&#xff0c;特殊点有二&#xff0c;如下&#xff1a; 堆是一个完全二叉树&#xff1b;堆中每一个节点的值都必须大于等于&#xff08;或小于等于&#…

SpringBoot 学习(九)Redis

11. 集成 Redis 11.1 说明 SpringBoot 操作数据&#xff1a;sping-data、jpa、jdbc、mongodb、redis SpringBoot 2. 后&#xff0c;jedis 被替换为 lettuce jedis&#xff1a;采用直连&#xff0c;多线程操作不安全&#xff0c;增强安全性需使用 jedis pool 连接池&#xff0…

如何编写测试用例,一篇搞定

前言 说到测试用例&#xff0c;但凡是软件测试从业人员&#xff0c;都不会陌生。但对于测试新手来说&#xff0c;测试用例仍旧有遗漏&#xff0c;或者写不好的时候。那么&#xff0c;究竟应该如何写好测试用例呢&#xff1f;今天就来针对性的聊聊这个话题。 在分析如何写测试…

event.stopPropagation()

现在有如下 当点击子按钮的时候会触发子事件&#xff0c;同时也会触发父事件&#xff0c; 如何阻止呢 handleDownload(event) { event.stopPropagation(); 。。。。。。。。。。 },