Inheritance: MonoBehaviour
示例#1
0
        private void Initialize()
        {
            var existingCoroutineExecutorGameObject = GameObject.Find(gameObjectName);

            if (existingCoroutineExecutorGameObject != null)
            {
                m_GameObject        = existingCoroutineExecutorGameObject;
                m_CoroutineExecutor = m_GameObject.GetComponent <CoroutineExecutor>();

                if (m_CoroutineExecutor != null)
                {
                    m_CoroutineExecutor.referenceCount++;
                    return;
                }
                else
                {
                    GameObject.DestroyImmediate(m_GameObject);
                    m_GameObject = null;
                }
            }

            m_GameObject = new GameObject(gameObjectName)
            {
                hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector
            };
            m_CoroutineExecutor = m_GameObject.AddComponent <CoroutineExecutor>();
            m_ApplicationQuit   = m_GameObject.AddComponent <ApplicationQuit>();
            m_CoroutineExecutor.referenceCount++;

            GameObject.DontDestroyOnLoad(m_GameObject);
        }
示例#2
0
        public void Dispose()
        {
            if (!m_Disposed)
            {
                m_Disposed = true;

                m_CoroutineExecutor.referenceCount--;
                if (m_CoroutineExecutor.referenceCount == 0)
                {
                    Object.DestroyImmediate(m_GameObject);
                }

                m_GameObject        = null;
                m_CoroutineExecutor = null;
                m_ApplicationQuit   = null;
            }
        }