From 34d02c40158c04e8316bf1aeed4e51fefec34e1d Mon Sep 17 00:00:00 2001 From: MuHua-123 <2960208585@qq.com> Date: Thu, 27 Feb 2025 23:47:39 +0800 Subject: [PATCH] 1 --- .gitignore | 1 + Packages/FSM/Runtime.meta | 8 ++ Packages/FSM/Runtime/Machine.cs | 37 ++++++++ Packages/FSM/Runtime/Machine.cs.meta | 11 +++ Packages/FSM/Runtime/MachineState.cs | 17 ++++ Packages/FSM/Runtime/MachineState.cs.meta | 11 +++ Packages/FSM/Runtime/MuHua.FSM.asmdef | 14 +++ Packages/FSM/Runtime/MuHua.FSM.asmdef.meta | 7 ++ Packages/FSM/Sample.meta | 8 ++ Packages/FSM/package.json | 18 ++++ Packages/FSM/package.json.meta | 7 ++ .../Runtime/MuHua.LabelFollow.asmdef | 14 +++ ...def.meta => MuHua.LabelFollow.asmdef.meta} | 0 Packages/LabelFollow/Runtime/MuHua.asmdef | 3 - Packages/LabelFollow/Sample.meta | 8 ++ Packages/packages-lock.json | 6 ++ ProjectSettings/ProjectSettings.asset | 94 ++++++++++++++++++- 17 files changed, 260 insertions(+), 4 deletions(-) create mode 100644 Packages/FSM/Runtime.meta create mode 100644 Packages/FSM/Runtime/Machine.cs create mode 100644 Packages/FSM/Runtime/Machine.cs.meta create mode 100644 Packages/FSM/Runtime/MachineState.cs create mode 100644 Packages/FSM/Runtime/MachineState.cs.meta create mode 100644 Packages/FSM/Runtime/MuHua.FSM.asmdef create mode 100644 Packages/FSM/Runtime/MuHua.FSM.asmdef.meta create mode 100644 Packages/FSM/Sample.meta create mode 100644 Packages/FSM/package.json create mode 100644 Packages/FSM/package.json.meta create mode 100644 Packages/LabelFollow/Runtime/MuHua.LabelFollow.asmdef rename Packages/LabelFollow/Runtime/{MuHua.asmdef.meta => MuHua.LabelFollow.asmdef.meta} (100%) delete mode 100644 Packages/LabelFollow/Runtime/MuHua.asmdef create mode 100644 Packages/LabelFollow/Sample.meta diff --git a/.gitignore b/.gitignore index 58cbc82..afcb339 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ crashlytics-build.properties # Temporary auto-generated Android Assets /[Aa]ssets/[Ss]treamingAssets/aa.meta /[Aa]ssets/[Ss]treamingAssets/aa/* + diff --git a/Packages/FSM/Runtime.meta b/Packages/FSM/Runtime.meta new file mode 100644 index 0000000..37f4728 --- /dev/null +++ b/Packages/FSM/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: abc53960d2470184c807cea21744653e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/FSM/Runtime/Machine.cs b/Packages/FSM/Runtime/Machine.cs new file mode 100644 index 0000000..bd71c50 --- /dev/null +++ b/Packages/FSM/Runtime/Machine.cs @@ -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 states = new Dictionary(); + + 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."); + } + } + } +} diff --git a/Packages/FSM/Runtime/Machine.cs.meta b/Packages/FSM/Runtime/Machine.cs.meta new file mode 100644 index 0000000..2bd2fbe --- /dev/null +++ b/Packages/FSM/Runtime/Machine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0cd74b3acde213f489a11a9e0ccd81e7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/FSM/Runtime/MachineState.cs b/Packages/FSM/Runtime/MachineState.cs new file mode 100644 index 0000000..da756de --- /dev/null +++ b/Packages/FSM/Runtime/MachineState.cs @@ -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(); + } +} \ No newline at end of file diff --git a/Packages/FSM/Runtime/MachineState.cs.meta b/Packages/FSM/Runtime/MachineState.cs.meta new file mode 100644 index 0000000..df122f3 --- /dev/null +++ b/Packages/FSM/Runtime/MachineState.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18d0a64357fbec04d8fbd51d45c88e4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/FSM/Runtime/MuHua.FSM.asmdef b/Packages/FSM/Runtime/MuHua.FSM.asmdef new file mode 100644 index 0000000..15dc4ca --- /dev/null +++ b/Packages/FSM/Runtime/MuHua.FSM.asmdef @@ -0,0 +1,14 @@ +{ + "name": "MuHua.FSM", + "rootNamespace": "", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Packages/FSM/Runtime/MuHua.FSM.asmdef.meta b/Packages/FSM/Runtime/MuHua.FSM.asmdef.meta new file mode 100644 index 0000000..ed802f3 --- /dev/null +++ b/Packages/FSM/Runtime/MuHua.FSM.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 856a56044e2bfce4dbc2d22bfb5a926f +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/FSM/Sample.meta b/Packages/FSM/Sample.meta new file mode 100644 index 0000000..b8cc497 --- /dev/null +++ b/Packages/FSM/Sample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e92c6f04caccae40bb8e24b5307132d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/FSM/package.json b/Packages/FSM/package.json new file mode 100644 index 0000000..8292a95 --- /dev/null +++ b/Packages/FSM/package.json @@ -0,0 +1,18 @@ +{ + "name": "muhua-finite-state-machine", + "version": "1.0.0", + "displayName": "MuHua FSM", + "description": "\u6709\u9650\u72b6\u6001\u673a\u6846\u67b6", + "author": { + "name": "MuHua", + "email": "2960208585@qq.com" + }, + "type": "tool", + "samples": [ + { + "displayName": "Label Follow Example", + "description": "An example showing how to use the Label Follow system.", + "path": "Samples~" + } + ] +} \ No newline at end of file diff --git a/Packages/FSM/package.json.meta b/Packages/FSM/package.json.meta new file mode 100644 index 0000000..72791a8 --- /dev/null +++ b/Packages/FSM/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ab0f2027431743d43afe689084dcd33c +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/LabelFollow/Runtime/MuHua.LabelFollow.asmdef b/Packages/LabelFollow/Runtime/MuHua.LabelFollow.asmdef new file mode 100644 index 0000000..13b59cf --- /dev/null +++ b/Packages/LabelFollow/Runtime/MuHua.LabelFollow.asmdef @@ -0,0 +1,14 @@ +{ + "name": "MuHua.LabelFollow", + "rootNamespace": "", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Packages/LabelFollow/Runtime/MuHua.asmdef.meta b/Packages/LabelFollow/Runtime/MuHua.LabelFollow.asmdef.meta similarity index 100% rename from Packages/LabelFollow/Runtime/MuHua.asmdef.meta rename to Packages/LabelFollow/Runtime/MuHua.LabelFollow.asmdef.meta diff --git a/Packages/LabelFollow/Runtime/MuHua.asmdef b/Packages/LabelFollow/Runtime/MuHua.asmdef deleted file mode 100644 index 7481b01..0000000 --- a/Packages/LabelFollow/Runtime/MuHua.asmdef +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "MuHua" -} diff --git a/Packages/LabelFollow/Sample.meta b/Packages/LabelFollow/Sample.meta new file mode 100644 index 0000000..bd87b45 --- /dev/null +++ b/Packages/LabelFollow/Sample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9d7dc56eb286ef44869e5c4a543a365 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index e4077da..f05168c 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -215,6 +215,12 @@ }, "url": "https://packages.unity.cn" }, + "muhua-finite-state-machine": { + "version": "file:FSM", + "depth": 0, + "source": "embedded", + "dependencies": {} + }, "muhua-label-follow": { "version": "file:LabelFollow", "depth": 0, diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 134210e..9fbb680 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -284,7 +284,99 @@ PlayerSettings: AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 150 m_BuildTargetIcons: [] - m_BuildTargetPlatformIcons: [] + m_BuildTargetPlatformIcons: + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1