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); }
public TModule AddModule <TModule> (CocoModuleBase module, object moduleId = null) where TModule : CocoModuleBase { Dictionary <object, CocoModuleBase> moduleDic = GetModuleDic <TModule> (); string moduleKey = GetModuleKeyById(ref moduleId); if (moduleDic.ContainsKey(moduleKey)) { Debug.LogErrorFormat("{0}->AddModule: can NOT add module [{1}<{2}>], because the one with same id already exists!", GetType(), moduleId, module.GetType().Name); return(null); } if (module.transform.parent != transform) { CocoLoad.SetParent(module, transform); } // init module CocoRoot.BindValue <TModule> ((TModule)module, moduleId); module.Init(moduleId); moduleDic.Add(moduleKey, module); return((TModule)module); }
protected TModule BindSubModule <TModule> (CocoModuleBase module, object moduleId = null) where TModule : CocoModuleBase { return(CocoMainController.Instance.AddModule <TModule> (module, moduleId)); }