{"record":{"id":"67f851d72e1e738f","repo":"EllanJiang/GameFramework","slug":"ui-group-0-is-not-exist","errorCode":null,"errorMessage":"UI group '{0}' is not exist.","messagePattern":"UI group '(.+?)' is not exist\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/UI/UIManager.cs","lineNumber":748,"sourceCode":"            if (m_UIFormHelper == null)\n            {\n                throw new GameFrameworkException(\"You must set UI form helper first.\");\n            }\n\n            if (string.IsNullOrEmpty(uiFormAssetName))\n            {\n                throw new GameFrameworkException(\"UI form asset name is invalid.\");\n            }\n\n            if (string.IsNullOrEmpty(uiGroupName))\n            {\n                throw new GameFrameworkException(\"UI group name is invalid.\");\n            }\n\n            UIGroup uiGroup = (UIGroup)GetUIGroup(uiGroupName);\n            if (uiGroup == null)\n            {\n                throw new GameFrameworkException(Utility.Text.Format(\"UI group '{0}' is not exist.\", uiGroupName));\n            }\n\n            int serialId = ++m_Serial;\n            UIFormInstanceObject uiFormInstanceObject = m_InstancePool.Spawn(uiFormAssetName);\n            if (uiFormInstanceObject == null)\n            {\n                m_UIFormsBeingLoaded.Add(serialId, uiFormAssetName);\n                m_ResourceManager.LoadAsset(uiFormAssetName, priority, m_LoadAssetCallbacks, OpenUIFormInfo.Create(serialId, uiGroup, pauseCoveredUIForm, userData));\n            }\n            else\n            {\n                InternalOpenUIForm(serialId, uiFormAssetName, uiGroup, uiFormInstanceObject.Target, pauseCoveredUIForm, false, 0f, userData);\n            }\n\n            return serialId;\n        }\n\n        /// <summary>","sourceCodeStart":730,"sourceCodeEnd":766,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/UI/UIManager.cs#L730-L766","documentation":"OpenUIForm looks up the target UI group by name after validating it; if GetUIGroup returns null — the group was never created with AddUIGroup — the framework throws this formatted GameFrameworkException naming the missing group.","triggerScenarios":"Calling OpenUIForm with a group name that has no matching UIGroup, e.g. typo in the name, group registered on a different UIManager/UIComponent, or group added after the open call.","commonSituations":"Renaming groups in config but not in code, multiple UIComponents each with their own groups, forgetting AddUIGroup in a new scene's bootstrap, or case-sensitive name mismatches.","solutions":["Register the group before opening forms: uiManager.AddUIGroup(\"Default\", ...);","Verify the group name string exactly matches the one passed to AddUIGroup (watch case and whitespace)","Ensure the same UIManager instance is used for AddUIGroup and OpenUIForm"],"exampleFix":"// before\nuiManager.OpenUIForm(\"Shop\", \"ShopGroup\"); // never added\n// after\nif (uiManager.GetUIGroup(\"ShopGroup\") == null)\n    uiManager.AddUIGroup(\"ShopGroup\", groupDepthHelper);\nuiManager.OpenUIForm(\"Shop\", \"ShopGroup\");","handlingStrategy":"validation","validationCode":"if (uiManager.GetUIGroup(uiGroupName) == null)\n{\n    Log.Error($\"UI group '{uiGroupName}' does not exist; add it before opening forms\");\n    return;\n}","typeGuard":"bool GroupExists(UIManager m, string name) => m.GetUIGroup(name) != null;","tryCatchPattern":"try { uiManager.OpenUIForm(assetName, groupName); }\ncatch (GameFrameworkException ex) when (ex.Message.Contains(\"is not exist\"))\n{ Log.Error($\"Unknown UI group: {ex.Message}\"); }","preventionTips":["Call AddUIGroup for every group referenced by UI configs during bootstrap","Use constants for group names shared between AddUIGroup and OpenUIForm","Ensure a single UIManager instance owns all groups"],"tags":["ui","entity-not-found","group-lookup"],"backgroundTag":"entity-not-found","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}