91 lines
1.8 KiB
C#
91 lines
1.8 KiB
C#
// 状态定义
|
|
|
|
using System;
|
|
using AlicizaX;
|
|
using AlicizaX.Fsm.Runtime;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.Profiling;
|
|
|
|
public class NavigationState : StateBase<EnemyAI.EnemyAIState>
|
|
{
|
|
protected override void OnInit()
|
|
{
|
|
Debug.Log("Nav1初始化");
|
|
}
|
|
|
|
protected override void OnEnter()
|
|
{
|
|
Debug.Log("Nav1进入");
|
|
}
|
|
|
|
protected override void OnExit()
|
|
{
|
|
Debug.Log("Nav1退出");
|
|
}
|
|
|
|
protected override void OnUpdate(float deltaTime)
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.A))
|
|
{
|
|
SwitchState(EnemyAI.EnemyAIState.Navi2);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public class NavigationState2 : StateBase<EnemyAI.EnemyAIState>
|
|
{
|
|
protected override void OnInit()
|
|
{
|
|
Debug.Log("Nav2初始化");
|
|
}
|
|
|
|
protected override void OnEnter()
|
|
{
|
|
Debug.Log("Nav2进入");
|
|
}
|
|
|
|
protected override void OnExit()
|
|
{
|
|
Debug.Log("Nav2退出");
|
|
}
|
|
|
|
protected override void OnUpdate(float deltaTime)
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.D))
|
|
{
|
|
SwitchState(EnemyAI.EnemyAIState.Navi);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public class EnemyAI : MonoBehaviour
|
|
{
|
|
public enum EnemyAIState
|
|
{
|
|
Navi,
|
|
Navi2
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
// Profiler.BeginSample("FSM");
|
|
//
|
|
// var fsm = GameApp.Fsm.Create<EnemyAIState>("EnemyAI");
|
|
// fsm.Register<NavigationState>(EnemyAIState.Navi);
|
|
// fsm.SwitchState(0);
|
|
// GameApp.Fsm.Destroy(fsm);
|
|
//
|
|
// Profiler.EndSample();
|
|
|
|
Profiler.BeginSample("FSM2");
|
|
var fsm2 = GameApp.Fsm.Create<EnemyAIState>("EnemyAI2");
|
|
fsm2.Register<NavigationState>(EnemyAIState.Navi);
|
|
fsm2.Register<NavigationState2>(EnemyAIState.Navi2);
|
|
fsm2.SwitchState(0);
|
|
Profiler.EndSample();
|
|
}
|
|
}
|