Unity有限状态机
来源:互联网 发布:软件著作权登记日期 编辑:程序博客网 时间:2024/05/19 23:58
/// <summary>/// 状态接口/// </summary>public interface StateBase{ void Enter(); void Execute(); void Exit(); void HandlerInput();}
/// <summary>/// 状态机/// </summary>public class StateMachine : MonoBehaviour{ /// <summary> /// 状态引用 /// </summary> public StateBase stateNow; public void ChangeState(StateBase newState) { stateNow.Exit(); stateNow = newState; stateNow.Enter(); stateNow.Execute(); } public virtual void ResetState() { } public void StateUpdate() { stateNow.HandlerInput(); }}
/// <summary>/// 状态实例/// </summary>public class InitialState : StateBase { private PlayerMachine machine; public InitialState(PlayerMachine machine) { this.machine = machine; } public void Enter() { } public void Execute() { } public void Exit() { } public void HandlerInput() { if (Input.GetKeyDown(KeyCode.Space)) { machine.ChangeState(machine.jumpState); } if (Input.GetKey(KeyCode.A)) { machine.ChangeState(machine.walkState); } }}
/// <summary>/// 状态实例/// </summary>public class WalkState : StateBase{ private PlayerMachine machine; public WalkState(PlayerMachine machine) { this.machine = machine; } public void Enter() { Debug.Log("walk enter"); } public void Execute() { Debug.Log("walk execute"); } public void Exit() { Debug.Log("walk exit"); } public void HandlerInput() { if (Input.GetKeyDown(KeyCode.Space)) { machine.ChangeState(machine.jumpState); } else machine.ResetState(); }}
/// <summary>/// 状态实例/// </summary>public class JumpState : StateBase { private PlayerMachine machine; public JumpState(PlayerMachine machine) { this.machine = machine; } public void Enter() { Debug.Log("jump enter"); } public void Execute() { Debug.Log("jump execute"); } public void Exit() { Debug.Log("jump exit"); } public void HandlerInput() { if (Input.GetKey(KeyCode.A)) { machine.ChangeState(machine.walkState); } else machine.ResetState(); }}
public class PlayerMachine : StateMachine { public InitialState initialState; public JumpState jumpState; public WalkState walkState; void Start () { initialState = new InitialState(this); jumpState = new JumpState(this); walkState = new WalkState(this); stateNow = initialState;}void Update () { StateUpdate();} public override void ResetState() { ChangeState(initialState); }}
TEST 按下空格
阅读全文
0 0
- unity 有限状态机
- Unity有限状态机
- Unity有限状态机
- Unity有限状态机实现
- unity 有限状态机使用
- unity 有限状态机使用
- unity 有限状态机(一)
- Unity有限状态机详解
- unity AI之有限状态机
- Unity FSM有限状态机
- 【Unity】Finite State Machine 有限状态机
- 在Unity中实现有限状态机
- unity 一个简单的有限状态机
- 在Unity中实现有限状态机
- 在Unity中实现有限状态机
- unity游戏开发中的有限状态机FSM经验
- Unity Game Programming AI(2)有限状态机
- Unity 客户端框架(一):有限状态机
- 《深入理解java虚拟机》学习笔记3——垃圾回收算法
- git安装使用
- Android线程管理(一)
- android 创建底部导航栏 (radiogroup+fragment)
- 遗传算法简单例题的详解
- Unity有限状态机
- Android开发笔记
- 解决ubuntu1604 Vmware虚拟机NAT方式不能联网问题
- 贴几个用PYTHON的机器学习的入门贴
- Java常用公共工具记录
- Android Bitmap 知识点梳理
- 3740
- MAT(Memory Analyzer Tool)使用心得
- 动态规划——343. Integer Break[Medium]