47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
|
|
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;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|