{"record":{"id":"1ad34d57e842360e","repo":"EllanJiang/GameFramework","slug":"ui-group-name-is-invalid","errorCode":null,"errorMessage":"UI group name is invalid.","messagePattern":"UI group name is invalid\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/UI/UIManager.UIGroup.cs","lineNumber":36,"sourceCode":"        {\n            private readonly string m_Name;\n            private int m_Depth;\n            private bool m_Pause;\n            private readonly IUIGroupHelper m_UIGroupHelper;\n            private readonly GameFrameworkLinkedList<UIFormInfo> m_UIFormInfos;\n            private LinkedListNode<UIFormInfo> m_CachedNode;\n\n            /// <summary>\n            /// 初始化界面组的新实例。\n            /// </summary>\n            /// <param name=\"name\">界面组名称。</param>\n            /// <param name=\"depth\">界面组深度。</param>\n            /// <param name=\"uiGroupHelper\">界面组辅助器。</param>\n            public UIGroup(string name, int depth, IUIGroupHelper uiGroupHelper)\n            {\n                if (string.IsNullOrEmpty(name))\n                {\n                    throw new GameFrameworkException(\"UI group name is invalid.\");\n                }\n\n                if (uiGroupHelper == null)\n                {\n                    throw new GameFrameworkException(\"UI group helper is invalid.\");\n                }\n\n                m_Name = name;\n                m_Pause = false;\n                m_UIGroupHelper = uiGroupHelper;\n                m_UIFormInfos = new GameFrameworkLinkedList<UIFormInfo>();\n                m_CachedNode = null;\n                Depth = depth;\n            }\n\n            /// <summary>\n            /// 获取界面组名称。\n            /// </summary>","sourceCodeStart":18,"sourceCodeEnd":54,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/UI/UIManager.UIGroup.cs#L18-L54","documentation":"The UIGroup constructor validates its name and throws when it is null or empty. Group names are used as dictionary keys in UIManager and shown in logs, so a blank name would corrupt group lookup and event routing.","triggerScenarios":"AddUIGroup (UIManager) or direct UIGroup construction with string.IsNullOrEmpty(name) — e.g. a constant defined as empty string, or a group name read from uninitialized config.","commonSituations":"UI group name loaded from a config table/ScriptableObject that lacks a value; typo leaving a name field empty; calling AddUIGroup with a variable not yet assigned.","solutions":["Pass a non-empty group name to UIComponent.AddUIGroup / UIManager.AddUIGroup.","Check config-driven group names for missing values before calling AddUIGroup.","Add a startup assertion that all configured group names are non-empty."],"exampleFix":"// before\nUIComponent.AddUIGroup(groupName, depth); // groupName == \"\"\n// after\nif (string.IsNullOrEmpty(groupName)) throw new ArgumentException(\"Group name required\");\nUIComponent.AddUIGroup(groupName, depth);","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(groupName))\n{\n    Log.Error(\"UIGroup name must be non-empty\");\n    return;\n}\nUIComponent.AddUIGroup(groupName, depth);","typeGuard":null,"tryCatchPattern":"try { UIComponent.AddUIGroup(groupName, depth); }\ncatch (GameFrameworkException ex) { Log.Error(ex, \"Invalid UI group name\"); }","preventionTips":["Define group names as named constants","Validate config-driven group names at load time","Never call AddUIGroup with uninitialized string variables"],"tags":["unity","gameframework","ui","empty-string"],"backgroundTag":"empty-required-field","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}