From 8252e6debc89914022cbe462f00d95992b887a0b Mon Sep 17 00:00:00 2001 From: dsarno Date: Mon, 19 Jan 2026 07:04:54 -0800 Subject: [PATCH] fix: search inactive objects when setActive=true in modify (#581) When trying to activate an inactive GameObject via manage_gameobject modify with setActive=true, the lookup would fail because inactive objects were not included in the search by default. Now automatically sets searchInactive=true when setActive=true is specified, allowing inactive objects to be found and activated. --- .../Editor/Tools/GameObjects/GameObjectModify.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs b/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs index b995bbc..bfa83fa 100644 --- a/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs +++ b/MCPForUnity/Editor/Tools/GameObjects/GameObjectModify.cs @@ -14,7 +14,15 @@ namespace MCPForUnity.Editor.Tools.GameObjects { internal static object Handle(JObject @params, JToken targetToken, string searchMethod) { - GameObject targetGo = ManageGameObjectCommon.FindObjectInternal(targetToken, searchMethod); + // When setActive=true is specified, we need to search for inactive objects + // otherwise we can't find an inactive object to activate it + JObject findParams = null; + if (@params["setActive"]?.ToObject() == true) + { + findParams = new JObject { ["searchInactive"] = true }; + } + + GameObject targetGo = ManageGameObjectCommon.FindObjectInternal(targetToken, searchMethod, findParams); if (targetGo == null) { return new ErrorResponse($"Target GameObject ('{targetToken}') not found using method '{searchMethod ?? "default"}'.");