一个单例的模板,通过继承这个工具类,在Unity中轻松实现单例,不过这个单例模板还是存在一些问题,比如不适合多线程。具体较为完整的单例模式介绍,可以参考这篇文章下面这篇简书上的文章,关于Java的单例 http://www.jianshu.com/p/eb30a388c5fc ,文章将单例模式讲解的很清楚,C#的单例模式也基本差不多。
Unity3D中的操作
首先打开Unity3D,创建一个类命名为Singleton,意思是单例。打开这个类填写如下代码:
Singleton:
using System;
using UnityEngine;
//定义泛型T,限定T继承自MonoBehaviour
public abstract class Singleton<T>:MonoBehaviour
where T : MonoBehaviour
{
private static T m_instance = null;
public static T Instance
{
get { return m_instance; }
}
//调用Awake()方法,定义为虚方法,方便子类如果也需要Awake()方法,可以复写
protected virtual void Awake()
{
m_instance = this as T;
}
}
单例模板使用方法,创建一个C#脚本,名称任意,我命名为Test,具体如下:
Test:
using System;
using UnityEngine;
public class Test : Singleton<Test>
{
//可以简单定义个方法或者属性,就可以在外部通过
//Test.Instance.属性或者方法 进行访问了
}
只是一个简单的单例模式,但是感觉在开发中,单例模式用的非常多。虽然这个模板还是存在一些不足,不过在一般情况下,肯定是够用了,而且还是很方便的,只要直接继承就行。