Beispiel #1
0
        /// <summary>
        /// 切换到指定模式
        /// </summary>
        ///
        /// <param name="mode">目标模式</param>
        ///
        /// <author>Nianchen Deng</author>
        protected void SwitchToMode(_Mode mode)
        {
            if (mode == null)
            {
                return;
            }
            if (!mode.CheckBeforeEnter())
            {
                return;
            }
            if (currentMode != null)
            {
                currentMode.Exit();
            }
            var lastMode = currentMode;

            currentMode = mode;
            try {
                currentMode.Enter();
            } catch (Exception e) {
                // 进入新模式失败,返回之前的模式
                Debug.LogException(e);
                if (lastMode != null)
                {
                    lastMode.Enter();
                }
            }
        }
Beispiel #2
0
 /// <summary>
 /// 添加一个模式对象。
 /// <para>模式基类<see cref="_Mode"/>会在Awake()中调用该方法进行注册。</para>
 /// </summary>
 ///
 /// <param name="mode">模式对象</param>
 ///
 /// <author>Nianchen Deng</author>
 internal void AddMode(_Mode mode) => _modes.Add(mode.name, mode);