Files
plugin-library/Assets/00.StaryEvo/Runtime/PlayerSettings/DomainConfig.cs
2025-10-31 11:18:23 +08:00

71 lines
1.9 KiB
C#

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
{
/// <summary>
/// 域id
/// </summary>
[Sirenix.OdinInspector.ReadOnly] public string domain;
/// <summary>
/// 入口命名空间
/// </summary>
[Sirenix.OdinInspector.ReadOnly] public string @namespace;
/// <summary>
/// 入口类
/// </summary>
[Sirenix.OdinInspector.ReadOnly] public string className;
public LoadResType loadResType;
[Sirenix.OdinInspector.ReadOnly] [ShowIf("loadResType", LoadResType.Prefab)]
/// <summary>
/// 入口预制体
/// </summary>
public string mainPrefab;
#if UNITY_EDITOR
[ShowIf("loadResType", LoadResType.Scene)] [OnValueChanged("LoadScenePath")]
public SceneAsset sceneAsset;
#endif
[ShowIf("loadResType", LoadResType.Scene)]
public LoadSceneMode loadSceneMode;
[ShowIf("loadResType", LoadResType.Scene)] [ReadOnly]
public string scenePath;
[ShowIf("loadResType", LoadResType.Scene)] [ReadOnly]
public string sceneIdentifier;
#if UNITY_EDITOR
public void LoadScenePath()
{
if (sceneAsset == null)
{
Debug.LogError($"Scene {scenePath} 资源不存在,请检查!");
return;
}
scenePath = AssetDatabase.GetAssetPath(sceneAsset);
sceneIdentifier = $"Scenes_{sceneAsset.name}";
}
#endif
public enum LoadResType
{
Prefab,
Scene
}
}
}