{"record":{"id":"69765bb41cb93e6c","repo":"EllanJiang/GameFramework","slug":"entity-is-invalid-entitymanager","errorCode":null,"errorMessage":"Entity is invalid.","messagePattern":"Entity is invalid\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Entity/EntityManager.cs","lineNumber":708,"sourceCode":"        /// <summary>\n        /// 隐藏实体。\n        /// </summary>\n        /// <param name=\"entity\">实体。</param>\n        public void HideEntity(IEntity entity)\n        {\n            HideEntity(entity, null);\n        }\n\n        /// <summary>\n        /// 隐藏实体。\n        /// </summary>\n        /// <param name=\"entity\">实体。</param>\n        /// <param name=\"userData\">用户自定义数据。</param>\n        public void HideEntity(IEntity entity, object userData)\n        {\n            if (entity == null)\n            {\n                throw new GameFrameworkException(\"Entity is invalid.\");\n            }\n\n            HideEntity(entity.Id, userData);\n        }\n\n        /// <summary>\n        /// 隐藏所有已加载的实体。\n        /// </summary>\n        public void HideAllLoadedEntities()\n        {\n            HideAllLoadedEntities(null);\n        }\n\n        /// <summary>\n        /// 隐藏所有已加载的实体。\n        /// </summary>\n        /// <param name=\"userData\">用户自定义数据。</param>\n        public void HideAllLoadedEntities(object userData)","sourceCodeStart":690,"sourceCodeEnd":726,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Entity/EntityManager.cs#L690-L726","documentation":"Parameter guard in EntityManager.HideEntity(IEntity, object): thrown when the entity argument is null. The entity manager cannot hide an entity it has no reference to, so the call is rejected up front instead of failing later during entity lookup; pass a valid IEntity obtained from the manager.","triggerScenarios":"Calling HideEntity(IEntity, object) with a null entity reference.","commonSituations":"A cached entity field that was never assigned or was cleared; dictionary lookup returned null and was passed through; ShowEntitySuccess handler stored a null on failure path.","solutions":["Null-check the entity before calling HideEntity","Obtain the entity via GetEntity(id) and verify non-null first","Fix the code path that left the cached entity reference null"],"exampleFix":"// before\nIEntity entity = GetCachedEntity();\nm_EntityComponent.HideEntity(entity, null);\n// after\nIEntity entity = GetCachedEntity();\nif (entity != null)\n{\n    m_EntityComponent.HideEntity(entity, null);\n}","handlingStrategy":"type-guard","validationCode":"if (entity == null) return;","typeGuard":"bool IsValidEntity(IEntity e) => e != null;","tryCatchPattern":"try { HideEntity(entity, userData); } catch (GameFrameworkException ex) when (ex.Message == \"Entity is invalid.\") { Debug.LogWarning(\"HideEntity called with null entity\"); }","preventionTips":["Null-check cached entity fields before use","Clear caches and cancel callbacks together on hide","Let the compiler's nullable annotations flag unassigned entity fields"],"tags":["unity","gameframework","entity","null"],"backgroundTag":"null-argument","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}