diff --git a/Assets/GameScripts/DotNet/Core/Helper/EnumHelper.cs b/Assets/GameScripts/DotNet/Core/Helper/EnumHelper.cs index c59a155e..c81bc51d 100644 --- a/Assets/GameScripts/DotNet/Core/Helper/EnumHelper.cs +++ b/Assets/GameScripts/DotNet/Core/Helper/EnumHelper.cs @@ -26,5 +26,14 @@ namespace TEngine } return (T)Enum.Parse(typeof(T), str); } + + public static T Parse(this string str) + { + if (!Enum.IsDefined(typeof(T), str)) + { + return default(T); + } + return (T)Enum.Parse(typeof(T), str); + } } } \ No newline at end of file diff --git a/DotNet/Logic/src/OnCreateScene.cs b/DotNet/Logic/src/OnCreateScene.cs index 6f57f916..6d72295c 100644 --- a/DotNet/Logic/src/OnCreateScene.cs +++ b/DotNet/Logic/src/OnCreateScene.cs @@ -3,6 +3,16 @@ using TEngine.Core.Network; namespace TEngine.Logic; +[Flags] +public enum SceneType: long +{ + None = 0, + Gate = 1, // Gate + Addressable = 1 << 2, // 负责进程间消息通信 + Map = 1 << 3, // 游戏场景服 + Chat = 1 << 4, // 游戏聊天服 +} + /// /// 场景创建回调。 /// 常用于定义场景需要添加的组件。 @@ -17,14 +27,14 @@ public class OnCreateScene : AsyncEventSystem // 比如Map下你需要一些自定义组件、你也可以在这里操作 var sceneConfigInfo = self.SceneInfo; - switch (sceneConfigInfo.SceneType) + switch (sceneConfigInfo.SceneType.Parse()) { - case "Addressable": + case SceneType.Addressable: { sceneConfigInfo.Scene.AddComponent(); break; } - case "Gate": + case SceneType.Gate: { sceneConfigInfo.Scene.AddComponent(); break;