管理各种管理器

///为什么需要单例
///单例模式核心在于对于某个单例类,在系统中同时只存在唯一一个实例,并且该实例容易被外界所访问;
///避免创建过多的对象,意味着在内存中,只存在一个实例,减少了内存开销;

using System.Collections;
using System.Collections.Generic;
using UnityEngine; namespace ARPG
{
///<summary>
/// 管理各种管理器
///</summary>
///为什么需要单例
///单例模式核心在于对于某个单例类,在系统中同时只存在唯一一个实例,并且该实例容易被外界所访问;
///避免创建过多的对象,意味着在内存中,只存在一个实例,减少了内存开销;
public class SingerMonoManager<T>: MonoBehaviour where T:SingerMonoManager<T>
{
//第一种方法单例
//public static T instance { get; private set; }
//public void Awake()
//{
// instance = this as T;
//} //第二种方法单例
//按需实例
//public static T instance { get; private set; }
//public static T GetInstance()
//{
// if (instance==null)
// {
// instance = FindObjectOfType<T>();
// //在场景种查找该类型的实例对象
// if (instance==null)
// {
// instance = new GameObject("singer" + typeof(T).Name).AddComponent<T>();
// }
// }
// return instance;
//} //第三种方法单例
//市面上项目最常见单例模式的第二种和第三种
private static T instance;
public static T Instance
{
get
{
if (instance==null)
{
instance = FindObjectOfType<T>();
if (instance==null)
{
instance = new GameObject("Singer" + typeof(T).Name).AddComponent<T>();
}
}
return instance;
}
set
{
instance = value;
}
}
}
}

SingerMonoManager

Unity&C# SingerMonoManager泛型单例的更多相关文章

  1. 设计模式——通用泛型单例(普通型和继承自MonoBehaviour)

    单例模式是设计模式中最为常见的,不多解释了.但应该尽量避免使用,一般全局管理类才使用单例. 普通泛型单例: public abstract class Singleton<T> where ...

  2. unity3d中设计模式的学习<一>:泛型单例

    单例是游戏开发中比较常见的设计模式,虽然针对的功能不同,但是有一些功能还是共有的,代码也不少,如果能放在一个基类里面是最好不过了,但是单例里需要有个instance功能来返回当前对象,所以这个功能必须 ...

  3. C# 泛型单例

    不支持非公共的无参构造函数的 public abstract class BaseInstance<T> where T : class,new() { private readonly ...

  4. Unity C# 脚本的单例

    今天学习了一个比较不错的单例模式 public class UnitySigleton <T>: MonoBehaviour where T:class { public static T ...

  5. MonoBehaviour单例的另外一种省事的写法

    using UnityEngine; public class CommSystem: SingletonGeneric<CommSystem> { public static strin ...

  6. Unity 游戏框架搭建 (二) 单例的模板

      上一篇文章中说到的manager of managers,其中每个manager都是单例的实现,当然也可以使用静态类实现,但是相比于静态类的实现,单例的实现更为通用,可以适用大多数情况. 如何设计 ...

  7. Unity 游戏框架搭建 2018 (二) 单例的模板与最佳实践

    Unity 游戏框架搭建 2018 (二) 单例的模板与最佳实践 背景 很多开发者或者有经验的老手都会建议尽量不要用单例模式,这是有原因的. 单例模式是设计模式中最简单的也是大家通常最先接触的一种设计 ...

  8. Unity 游戏框架搭建 (十三) 无需继承的单例的模板

    之前的文章中介绍的Unity 游戏框架搭建 (二) 单例的模板和Unity 游戏框架搭建 (三) MonoBehaviour单例的模板有一些问题. 存在的问题: 只要继承了单例的模板就无法再继承其他的 ...

  9. Unity 单例写法

    借鉴自:http://www.cnblogs.com/CodeCabin/p/unity_global_manager.html 实现复杂一些的全局控制,如切换游戏关卡等操作,更常用的方式是使用单例类 ...

随机推荐

  1. OpenCV Hello World

    ▶ OpenCV 的环境配置与第一个程序 ● 去官网下载安装包 https://opencv.org/releases.html ▶ OpenCL 在Visual Studio 2015 中的配置.注 ...

  2. leetcode400

    public class Solution { public int FindNthDigit(int n) { //StringBuilder sb = new StringBuilder(); / ...

  3. 史上最全的Maven Pom文件标签详解

    <span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...

  4. java SSH框架

    1整体流程: 1:hibernate流程: 2:hibernate使用流程: 2.1:建立用户jar包,导入hibernate相应的jar包 2.2 引入mysql的JDBC驱动包 2.3 在数据库中 ...

  5. zk分布式锁-排它锁简单实现

    package Lock; import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;import ...

  6. linux qmake commend not found

    最近在学习Go语言,想要安装IDE liteide,在按这篇教程进行安装,当执行./build_linux.sh的时候,提示qmake commend not found的字眼,于是在网上搜,说出现这 ...

  7. Docker配置mysql互为主从

    配置准备 两台机器 两台机器:A(193.168.10.101)  B(193.168.10.102) 做好ssh免密登录 mysql大版本需要一致,小版本可忽略 并且两台机器已经安装好了docker ...

  8. 解决Springboot集成ActivitiModel提示输入用户名密码的问题

    一.原因分析 先要知道两点 - SpringBoot会根据引入的Jar包而自动配置相应的功能. - ActivitiModeler中引用了Spring Security的Jar.(是一个安全或者说权限 ...

  9. (转)Java 中关于String的空对象(null) ,空值(empty),空格

    原文出处:Java 中关于String的空对象(null) ,空值(empty),空格 定义 空对象: String s = null; 空对象是指定义一个对象s,但是没有给该对象分配空间,即没有实例 ...

  10. DNS开源服务器BIND最小配置详解

    一,简介 相对于存储和大数据领域,CDN是一个相对小的领域,但行行出状元,BIND就是CDN领域的蝉联N届的状元郎.BIND是一款非常常用的DNS开源服务器,全球有90%的DNS用BIND实现.值得一 ...