wordpress站所有分类不显示,安徽企业网站建设,秦皇岛网站开发费用,沧州市科一网站在使用Unity3d开发游戏或做客户端项目时#xff0c;单例是最常见的模式之一#xff0c;他简单了类的创建#xff0c;在代码中可以直接调用。下面是两个例子#xff0c;代码两种不同类型的单例#xff0c;一个是基本类的单例基类#xff0c;不是unity MonoBehaviour的类都…在使用Unity3d开发游戏或做客户端项目时单例是最常见的模式之一他简单了类的创建在代码中可以直接调用。下面是两个例子代码两种不同类型的单例一个是基本类的单例基类不是unity MonoBehaviour的类都继承它一个是从MonoBehaviour派生的单例基类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// summary
/// 游戏单例基类泛型约束表示T必须是一个类且有一个无参的构造方法
/// /summary
/// typeparam nameT/typeparam
public abstract class BaseSingletonT where T : class,new () { private static T _instance new();public static T GetInstance() {return _instance;}public static T Instance{get{return _instance;}}
}/// summary
/// 继承MonoBahaviour的单例基类
/// /summary
/// typeparam nameT/typeparam
public abstract class BaseMonoBehaviourSingletonT : MonoBehaviour where T: MonoBehaviour{private static T _instance null;public static T Instance {get { if(_instance null){_instance FindObjectOfType(typeof(T)) as T;if (_instance null) {GameObject obj new GameObject();_instance (T)obj.AddComponent(typeof(T));obj.hideFlags HideFlags.DontSave;obj.name typeof(T).Name;DontDestroyOnLoad(obj);}}return _instance;}}}