public void RemoveModule <TModule> (object moduleId = null) where TModule : CocoModuleBase { Dictionary <object, CocoModuleBase> moduleDic = GetModuleDic <TModule> (); string moduleKey = GetModuleKeyById(ref moduleId); if (!moduleDic.ContainsKey(moduleKey)) { Debug.LogWarningFormat("{0}->RemoveModule: NOT need remove module [{1}<{2}>], because id don't exist!", GetType(), moduleId, typeof(TModule).Name); return; } // clean module CocoModuleBase module = moduleDic [moduleKey]; module.Clean(); CocoRoot.Unbind <TModule> (moduleId); moduleDic.Remove(moduleKey); // destroy module Destroy(module.gameObject); }
protected void Unbind <T> () { CocoRoot.Unbind <T> (ID); }