46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using UnityEngine; | |||
|  | using System.Collections; | |||
|  | 
 | |||
|  | namespace Touka | |||
|  | { | |||
|  |     /// <summary> | |||
|  |     /// 单例类 | |||
|  |     /// </summary> | |||
|  |     /// <typeparam name="T"></typeparam> | |||
|  |     public class TKGSingleton<T> : MonoBehaviour where T : MonoBehaviour | |||
|  |     { | |||
|  |         private static T _instance; | |||
|  | 
 | |||
|  |         public static T Instance | |||
|  |         { | |||
|  |             get | |||
|  |             { | |||
|  |                 if (null == _instance) | |||
|  |                 { | |||
|  |                     _instance = Object.FindObjectOfType(typeof(T)) as T; | |||
|  |                     if (null != _instance) return _instance; | |||
|  | 
 | |||
|  |                     GameObject container = new GameObject | |||
|  |                     { | |||
|  |                         name = typeof(T).ToString() | |||
|  |                     }; | |||
|  |                     container.hideFlags = HideFlags.HideInHierarchy; | |||
|  |                     _instance = container.AddComponent(typeof(T)) as T; | |||
|  |                     Object.DontDestroyOnLoad(container); | |||
|  |                 } | |||
|  |                 return _instance; | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         private void Awake() | |||
|  |         { | |||
|  |             OnInstanceCreate(); | |||
|  |         } | |||
|  | 
 | |||
|  |         protected virtual void OnInstanceCreate() | |||
|  |         { | |||
|  |              | |||
|  |         } | |||
|  |     } | |||
|  | } |