Files
plugin-library/Assets/03.FiniteStateMachine/RunTime/FSMInitialize.cs

47 lines
1.3 KiB
C#
Raw Normal View History

2025-03-21 18:34:26 +08:00
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.SceneManagement;
public static class FSMInitialize
{
/// <summary>
/// ״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
/// </summary>
/// <param name="targetScene">ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
public static FSMManager Init(Scene targetScene)
{
GameObject targetObject = targetScene.GetRootGameObjects().FirstOrDefault(go => go.name == "FSMManger");
FSMManager fSMManager;
if (targetObject == null)
{
targetObject = new GameObject("FSMManger");
SceneManager.MoveGameObjectToScene(targetObject, targetScene);
fSMManager = new FSMManager();
fSMManager.FSMMangerObject = targetObject;
void OnSceneUnloaded(Scene scene)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>ʱ<EFBFBD>ͷŻ<CDB7><C5BB><EFBFBD>
if (scene.name == targetScene.name)
{
GameObject.Destroy(targetObject);
fSMManager = null;
}
}
SceneManager.sceneUnloaded += OnSceneUnloaded;
return fSMManager;
}
else
{
Debug.LogError("<22><><EFBFBD><EFBFBD>: "+targetScene.name + "<22>Ѿ<EFBFBD><D1BE><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>FSM״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return null;
}
}
}