namespace Plugins.JNGame.Util { public abstract class SingletonUtil where T : Singleton,new() { public static T Instance{ get{ if (Singleton.ins == null) { Singleton.ins = new T(); Singleton.ins.Init(); } return Singleton.ins; } } public static void Clean() { if(Singleton.ins != null) Singleton.ins.Clean(); Singleton.ins = null; } } public class Singleton { public static T ins; public virtual void Init(){} public virtual void Clean(){} } }