{"record":{"id":"7e5ac99159354ba1","repo":"EllanJiang/GameFramework","slug":"resource-mode-is-invalid","errorCode":null,"errorMessage":"Resource mode is invalid.","messagePattern":"Resource mode is invalid\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"error","filePath":"GameFramework/Resource/ResourceManager.cs","lineNumber":909,"sourceCode":"            }\n\n            if (m_ResourceLoader.TotalAgentCount > 0)\n            {\n                throw new GameFrameworkException(\"You must set read-write path before add load resource agent helper.\");\n            }\n\n            m_ReadWritePath = readWritePath;\n        }\n\n        /// <summary>\n        /// 设置资源模式。\n        /// </summary>\n        /// <param name=\"resourceMode\">资源模式。</param>\n        public void SetResourceMode(ResourceMode resourceMode)\n        {\n            if (resourceMode == ResourceMode.Unspecified)\n            {\n                throw new GameFrameworkException(\"Resource mode is invalid.\");\n            }\n\n            if (m_RefuseSetFlag)\n            {\n                throw new GameFrameworkException(\"You can not set resource mode at this time.\");\n            }\n\n            if (m_ResourceMode == ResourceMode.Unspecified)\n            {\n                m_ResourceMode = resourceMode;\n\n                if (m_ResourceMode == ResourceMode.Package)\n                {\n                    m_PackageVersionListSerializer = new PackageVersionListSerializer();\n\n                    m_ResourceIniter = new ResourceIniter(this);\n                    m_ResourceIniter.ResourceInitComplete += OnIniterResourceInitComplete;\n                }","sourceCodeStart":891,"sourceCodeEnd":927,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Resource/ResourceManager.cs#L891-L927","documentation":"SetResourceMode throws GameFrameworkException when resourceMode equals ResourceMode.Unspecified. Unspecified is a sentinel meaning 'not configured'; the framework requires a concrete mode (e.g. Package, PackageAndUpdatable) to operate.","triggerScenarios":"Calling SetResourceMode(ResourceMode.Unspecified), typically because the mode value was never loaded from configuration or defaulted incorrectly.","commonSituations":"Config file missing a resource mode entry, an enum cast from an unrecognized int, or forgetting to set the mode in the Unity inspector before startup.","solutions":["Pass a concrete ResourceMode value such as ResourceMode.Package or ResourceMode.PackageAndUpdatable","Fix the configuration source that yields Unspecified","Check for invalid int-to-enum casts producing the Unspecified (0) value"],"exampleFix":"// before\nresourceComponent.SetResourceMode((ResourceMode)config.Mode); // config.Mode == 0 -> Unspecified\n// after\nvar mode = (ResourceMode)config.Mode;\nif (mode != ResourceMode.Unspecified) resourceComponent.SetResourceMode(mode);","handlingStrategy":"validation","validationCode":"if (mode == ResourceMode.Unspecified)\n    throw new InvalidOperationException(\"Resource mode must be a concrete value, not Unspecified\");\nresourceComponent.SetResourceMode(mode);","typeGuard":"bool IsValidResourceMode(ResourceMode m) => m != ResourceMode.Unspecified && System.Enum.IsDefined(typeof(ResourceMode), m);","tryCatchPattern":"try { resourceComponent.SetResourceMode(mode); }\ncatch (GameFrameworkException ex) { Log.Error(\"Invalid resource mode: {0}\", ex.Message); }","preventionTips":["Never persist or pass ResourceMode.Unspecified as a real setting","Validate enum values deserialized from config/int data","Set the mode explicitly in the inspector or bootstrap"],"tags":["gameframework","unity","resource","enum","argument-validation"],"backgroundTag":"invalid-enum-value","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"}