//using CriWare.Assets; using UnityEngine; 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 AudioSource CriSource { get { var cmp = Object.FindObjectOfType(); if (!cmp) { return null; } return cmp.CriSource; } } private const string PrefabPath = "Assets/Editor/SkillEditor/Res/skill_editor_prefab.prefab"; private FakeFightManager() { } public void Init(int skillId, int timelineId) { #if UNITY_EDITOR // 切换到指定场景 UnityEditor.SceneManagement.EditorSceneManager.OpenScene("Assets/Scenes/FakeFight.unity"); // 优先进行场景内检查 var cmp = Object.FindObjectOfType(); if (cmp != null) { cmp.ForceInit(skillId, timelineId); } else { // 加载技能编辑器 var prefab = UnityEditor.AssetDatabase.LoadAssetAtPath(PrefabPath); var instObj = Object.Instantiate(prefab); var currentScene = SceneManager.GetActiveScene(); UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(currentScene); // 关联技能id和timelineid cmp = instObj.GetComponent(); cmp.ForceInit(skillId, timelineId); } // 打开timeline面板 UnityEditor.EditorApplication.ExecuteMenuItem("Window/Sequencing/Timeline"); #endif } } }