Unity3D-利用FSM设计相机跟随实现.docVIP

  • 12
  • 0
  • 约1.54万字
  • 约 13页
  • 2017-07-09 发布于安徽
  • 举报
Unity3D 利用FSM设计相机跟随实现 FSM有限状态机前面已经跟读者介绍过,使用Unity3D引擎实现了动作状态以及技能切换,FSM使用的条件是有限个状态切换,我们可以将FSM应用到相机中,很多人会问在相机中如何使用FSM,不论那种架构其主要目的是将模块之间的耦合性降低,传统的写法就是使用一个相机跟随类,所有的逻辑一股脑的写在一个类或者两个类中,这样一旦逻辑变动,修改起来非常麻烦,可能修改的就不是一个类两个类的事情,而如果我们采用FSM设计相机跟随,这样就容易多了。 接下来就实现FSM有限状态机,FSM作为一个通用类需要将其设置成模版的方式,具体代码如下所示: [csharp] view plain copy 在CODE上查看代码片派生到我的代码片 using System; using System.Collections.Generic; namespace Core { public class FSM { public class ObjectT, K where T : ObjectT, K { public delegate void Function(T self, float time); #region Protected members protected TimeSource timeSource = null; protected DictionaryK, StateT, K states = new DictionaryK,StateT,K(); protected StateT, K state = null; protected StateT, K prevState = null; #endregion #region Ctors public Object() { timeSource = TimeManager.Instance.MasterSource; } public Object(TimeSource source) { timeSource = source; } #endregion #region Public properties public K PrevState { get { return prevState.key; } } public K State { get { return state.key; } set { prevState = state; if (prevState != null) prevState.onExit(this as T, timeSource.TotalTime); StateT, K nextState; if (states.TryGetValue(value, out nextState)) { state = nextState; state.onEnter(this as T,

文档评论(0)

1亿VIP精品文档

相关文档