using System; using Sirenix.OdinInspector; using UnityEditor; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.Serialization; namespace Stary.Evo { [Serializable] [CreateAssetMenu(fileName = "DomainConfig", menuName = "Evo/Create DomainConfig")] public class DomainConfig : SerializedScriptableObject { /// /// 域id /// [Sirenix.OdinInspector.ReadOnly] public string domain; /// /// 入口命名空间 /// [Sirenix.OdinInspector.ReadOnly] public string @namespace; /// /// 入口类 /// [Sirenix.OdinInspector.ReadOnly] public string className; public LoadResType loadResType; [Sirenix.OdinInspector.ReadOnly] [ShowIf("loadResType", LoadResType.Prefab)] /// /// 入口预制体 /// public string mainPrefab; #if UNITY_EDITOR [ShowIf("loadResType", LoadResType.Scene)][OnValueChanged("LoadScenePath")] public SceneAsset sceneAsset; #endif [ShowIf("loadResType", LoadResType.Scene)][ReadOnly] public string scenePath; [ShowIf("loadResType", LoadResType.Scene)][ReadOnly] public string sceneIdentifier; [ShowIf("loadResType", LoadResType.Scene)] public LoadSceneMode loadSceneMode; public void LoadScenePath() { if (sceneAsset == null) { Debug.LogError($"Scene {scenePath} 资源不存在,请检查!"); return; } scenePath = AssetDatabase.GetAssetPath(sceneAsset); sceneIdentifier= $"Scenes_{sceneAsset.name}" ; } public enum LoadResType { Prefab, Scene } } }