首先感谢姜雪松先生,大家可以去他的博客查看注释以及代码等,http://jxwgame.blog.51cto.com/943299/1613585
言归正传:
1.在开发项目的过程中,总是会遇到这样的问题,从一个界面跳转到另外一个界面,每次操作都要对一些对象进行显示与隐藏,操作很麻烦也不方便维护修改。
2.于是很多人在这样的一个基础上开发出了很多便于维护和管理的UI框架或者UI状态机。
3.所以简单说下UI状态机,来管理项目中各个界面之间的切换等
1.UI界面的基类
using System.Collections; using System.Collections.Generic; using UnityEngine; public class StateBehaviour : MonoBehaviour, IState { public FiniteStateMachine BelongToFSM { get; protected set; } public string StateName { get; protected set; } protected Dictionary<string, string> transitionMap = new Dictionary<string, string>(); public virtual void Init(FiniteStateMachine belongToFSM) { StateName = GetType().Name; BelongToFSM = belongToFSM; BelongToFSM.Register(StateName, this); foreach (KeyValuePair<string, string> pair in transitionMap) { BelongToFSM.State(StateName).On(pair.Key).Enter(pair.Value); } } public virtual void OnEnter(string prevState) { #if UNITY_EDITOR Debug.LogWarning("[" + BelongToFSM.Name + "] On Enter State: " + StateName + ", previous state is: " + prevState + transitionMap.Count); #endif