/// <summary> /// 根据类名,获取到对应脚本 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="script"></param> /// <returns></returns> public T GetScript <T>(ScriptBehaviour script) where T : ScriptBehaviour { int key = script.GetType().GetHashCode(); ScriptBehaviour scriptBehaviour = null; if (m_ScriptBehaviours.TryGetValue(key, out scriptBehaviour)) { return(scriptBehaviour as T); } return(null); }
public void RegisterScript(ScriptBehaviour script) { //int key = script.GetHashCode();//通过类的对象进行获取的hashcode,每个对象的hash值都是不同的 int key = script.GetType().GetHashCode();//通过获取类的hashcode,保证同样的类,不同对象有一样的hash值 if (!m_ScriptBehaviours.ContainsKey(key)) { m_ScriptBehaviours.Add(key, script); script.Awake(); script.OnEnable(); script.Start(); } //todo:怎么处理已经注册过的情况? //什么情况下会重复注册? }