Unity C#单例模式的实现

一、添加单例模板类

using UnityEngine;

public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
    private static T _instance;

    private static object _lock = new object ();

    public static T Instance
    {
        get {
            if (applicationIsQuitting) {
                return null;
            }

            lock (_lock) {
                if (_instance == null) {
                    _instance = (T)FindObjectOfType (typeof(T));

                    if (FindObjectsOfType (typeof(T)).Length > 1) {
                        return _instance;
                    }

                    if (_instance == null) {
                        GameObject singleton = new GameObject ();
                        _instance = singleton.AddComponent<T> ();
                        singleton.name = "(singleton) " + typeof(T).ToString ();

                        DontDestroyOnLoad (singleton);
                    }
                }

                return _instance;
            }
        }
    }

    private static bool applicationIsQuitting = false;

    public void OnDestroy ()
    {
        applicationIsQuitting = true;
    }
}

二、定义自己的单例类

using UnityEngine;
using System;

public class GameManager : Singleton<GameManager> {
    public float score;
    void Awake () {
        this.Init();
    }

    private void Init() {
        // Init code
    }
}

三、调用使用

GameManager.Instance.score = 99;

原文地址: http://blog.csdn.net/cocos2der/article/details/47335197

时间: 2024-11-09 07:20:17

Unity C#单例模式的实现的相关文章

Unity IOC框架使用实例

1.IOC简介 IOC(Inversion of Control), 控制反转 DI (Dependency Injection),依赖注入 IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些联系在一起. 2.Unity引入 3.创建单例模式容器类 using Microsoft.Practices.Unity; using Microsoft.Practices.Unity.Configuratio

Unity---游戏设计模式(3)之单例模式

概述参考请看 参考博客 单例模式的使用非常广泛,相信大家在学习设计模式之前,就已经接触过了单例模式. 1.单例模式 C#中单例模式 public class Test { private static Test _instance; public static Test Instance { get { if (_instance == null) _instance = new Test(); return _instance; } } } Unity中单例模式 public class Te

Unity单例模式

转载引用了CSDN海涛高软,燕双飞等大牛的博客& https://www.cnblogs.com/liaoguipeng/p/5130144.html https://blog.csdn.net/yuechuzhao/article/details/46906217----Good Suggestions! 单例模式:(singleton pattern),简单说即类的实例在内存中只有一个: 简单两种类型的总结如下: I.写一个脚本,然后将这个脚本拖放到场景中某个对象身上,千万注意只拖一次到场景

单例模式在Unity中的应用

起因:每个游戏场景中都会有许多的游戏对象,而各个游戏场景之间也是同等的关系.如何去管理它们,是我们要解决的问题. 场景中各脚本间的直接访问,会在各脚本间形成一个巨大而又混乱的网络,这给以后代码的维护带来了极大的困难.为了避免这种因交互访问而带来的过度耦合情况,我们取消掉场景中各脚本间的直接交互,取而代之的是,让所有脚本都只与场景中的一个特定脚本交互. 在刚开始使用这种方法时,自己声明了一个场景中的全局脚本,然后把场景中所有其他需要交互的脚本声明为其成员,一旦脚本间要发生交互,就在脚本中声明一个全

Unity里面两种单例模式的实现

using System; public class Singleton<T> where T : class, new() { private static T m_instance; public static T instance { get { if (Singleton<T>.m_instance == null) { Singleton<T>.CreateInstance(); } return Singleton<T>.m_instance;

【ASP.Net MVC3 】使用Unity 实现依赖注入

什么是Unity? Unity是一个轻量级的可扩展的依赖注入容器,支持构造函数,属性和方法调用注入.Unity可以处理那些从事基于组件的软件工程的开发人员所面对的问题.构建一个成功应用程序的关键是实现非常松散的耦合设计.松散耦合的应用程序更灵活,更易于维护.这样的程序也更容易在开发期间进行测试.你可以模拟对象,具有较强的具体依赖关系的垫片(轻量级模拟实现),如数据库连接,网络连接,ERP连接,和丰富的用户界面组件.例如,处理客户信息的对象可能依赖于其他对象访问的数据存储,验证信息,并检查该用户是

Unity3d与设计模式(二)单例模式

为什么要使用单例模式 在我们的整个游戏生命周期当中,有很多对象从始至终有且只有一个.这个唯一的实例只需要生成一次,并且直到游戏结束才需要销毁. 单例模式一般应用于管理器类,或者是一些需要持久化存在的对象. Unity3d中单例模式的实现方式 (一)c#当中实现单例模式的方法 因为单例本身的写法不是重点,所以这里就略过,直接上代码. 以下代码来自于MSDN. public sealed class Singleton { private static volatile Singleton inst

深入理解IOC模式及Unity框架

学习IOC发现如下博客写的很清楚了,故Mark下来以便以后查阅和温习! 1.IoC模式:http://www.cnblogs.com/qqlin/archive/2012/10/09/2707075.html  这篇博客是通过一个播放器的例子来说明什么是依赖,依赖倒置,控制反转(IOC),最后实现依赖注入.通过Unity实现IOC容器.不错的一个例子 2.深入理解DIP.IoC.DI以及IoC容器 这个算是最通俗易懂的,手动实现了IOC容器  由浅入深 3.理解依赖注入(IOC)和学习Unity

unity —脚本优化— 消息处理系统

我们经常会遇到在运行状态下去找到一个现有对象.在这个例子中,我们需要添加新的敌人到EnemyManagerComponent中,以便于在我们的场景中可以按我们想的任何方式来控制敌人对象.由于涉及到开销,我们需要可靠和快速的方法作用于对象来查找已经存在的对象,而不用Find()方法和sendmessage()方法时,我们又该怎么做呢.这节主要讲解如果不用find(),又该完成对象之间的调用呢. 我们可以采用多种方法来解决这个问题,每一个都有自己的好处和弊端: 静态类: 单例组件: 分配引用到预先存