1 作用
创建唯一对象
2 代码
using UnityEngine;
using System.Collections;
namespace Single{
public class Single
{
private static Single instance;
public static Single Instance{
get{
if(null == instance){
instance = new Single();
}
return instance;
}
}
public void say(){
Debug.Log("Single");
}
}
public class SingleDemo2 : MonoBehaviour {
//单例模式
void Start(){
Single.Instance.say();
}
}
}
3 代码 - 单例模板
c++样式
using UnityEngine;
using System.Collections;
/// <summary>
/// C++样式单例模板
/// 因为命名问题,以namespace区分
/// </summary>
namespace StyleA{
public class Single<T> where T : new()
{
private static T instance;
public static T Instance(){
if(null == instance){
instance = new T();
}
return instance;
}
}
public class ConcereteObject : Single<ConcereteObject>
{
public void say(){
Debug.Log("ConcereteObject");
}
}
public class SingleDemo : MonoBehaviour {
//单例模板-c++样式
void Start(){
ConcereteObject.Instance().say();
}
}
}
C#样式
using UnityEngine;
using System.Collections;
/// <summary>
/// C#样式单例模板
/// 因为命名问题,以namespace区分
/// </summary>
namespace StyleB{
public class Single<T> where T : new()
{
private static T instance;
public static T Instance{
get
{
if(null == instance){
instance = new T();
}
return instance;
}
}
}
public class ConcereteObject : Single<ConcereteObject>
{
public void say(){
Debug.Log("ConcereteObject");
}
}
public class SingleDemo1 : MonoBehaviour {
void Start(){
ConcereteObject.Instance.say();
}
}
}