This commit is contained in:
MuHua-123
2025-02-27 23:47:39 +08:00
parent cf0e273205
commit 34d02c4015
17 changed files with 260 additions and 4 deletions
+37
View File
@@ -0,0 +1,37 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MuHua
{
public abstract class Machine : MonoBehaviour
{
protected MachineState currentState;
protected Dictionary<string, MachineState> states = new Dictionary<string, MachineState>();
protected virtual void Start() => InitializeStates();
protected virtual void Update() => currentState?.Update();
protected abstract void InitializeStates();
protected virtual void RegisterState(string stateType, MachineState state)
{
if (!states.ContainsKey(stateType)) { states.Add(stateType, state); }
}
public virtual void ChangeState(string stateType)
{
if (states.ContainsKey(stateType))
{
currentState?.Exit();
currentState = states[stateType];
currentState.Enter();
}
else
{
Debug.LogWarning($"State {stateType} is not registered.");
}
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0cd74b3acde213f489a11a9e0ccd81e7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+17
View File
@@ -0,0 +1,17 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MuHua
{
public abstract class MachineState
{
protected Machine machine;
public MachineState(Machine machine) => this.machine = machine;
public abstract void Enter();
public abstract void Update();
public abstract void Exit();
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 18d0a64357fbec04d8fbd51d45c88e4b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+14
View File
@@ -0,0 +1,14 @@
{
"name": "MuHua.FSM",
"rootNamespace": "",
"references": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 856a56044e2bfce4dbc2d22bfb5a926f
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: