Example #1
0
        public void RemoveScript(ScriptBehaviour script)
        {
            int key = script.GetHashCode();

            if (m_ScriptBehaviours.ContainsKey(key))
            {
                script.OnDisable();
                script.OnDestroy();
                m_ScriptBehaviours.Remove(key);
            }
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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:怎么处理已经注册过的情况?
            //什么情况下会重复注册?
        }