NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/FakeFight/FakeFightManager.cs

78 lines
2.1 KiB
C#
Raw Normal View History

using CriWare.Assets;
using UnityEngine;
2023-08-22 19:08:45 +08:00
using UnityEngine.SceneManagement;
using Object = UnityEngine.Object;
namespace Gameplay.FakeFight
{
public class FakeFightManager
{
private static FakeFightManager _instance;
public static FakeFightManager instance
{
get
{
if (_instance == null)
{
_instance = new FakeFightManager();
}
return _instance;
}
}
public CriAtomSourceForAsset CriSource
{
get
{
var cmp = Object.FindObjectOfType<CmpFakeFightScene>();
if (!cmp)
{
return null;
}
return cmp.CriSource;
}
}
2023-10-19 15:00:19 +08:00
private const string PrefabPath = "Assets/Editor/SkillEditor/Res/技能编辑器.prefab";
2023-08-22 19:08:45 +08:00
private FakeFightManager()
{
}
2023-10-19 15:00:19 +08:00
public void Init(int skillId, int timelineId)
2023-08-22 19:08:45 +08:00
{
#if UNITY_EDITOR
// 切换到指定场景
2023-10-19 15:00:19 +08:00
UnityEditor.SceneManagement.EditorSceneManager.OpenScene("Assets/Scenes/FakeFight.unity");
2023-08-22 19:08:45 +08:00
// 优先进行场景内检查
var cmp = Object.FindObjectOfType<CmpFakeFightScene>();
if (cmp != null)
{
cmp.ForceInit(skillId, timelineId);
}
else
{
// 加载技能编辑器
2023-10-19 15:00:19 +08:00
var prefab = UnityEditor.AssetDatabase.LoadAssetAtPath<GameObject>(PrefabPath);
2023-08-22 19:08:45 +08:00
var instObj = Object.Instantiate(prefab);
var currentScene = SceneManager.GetActiveScene();
UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(currentScene);
// 关联技能id和timelineid
cmp = instObj.GetComponent<CmpFakeFightScene>();
cmp.ForceInit(skillId, timelineId);
}
// 打开timeline面板
UnityEditor.EditorApplication.ExecuteMenuItem("Window/Sequencing/Timeline");
#endif
}
}
}