он работает почти идеально и расширяет все объекты в иерархии, но по какой-то причине некоторые объекты не расширяются.
Код: Выделить всё
using UnityEngine;
using UnityEditor;
using System.Reflection;
[CustomEditor(typeof(GameObject))]
public class HierarchyExpander : Editor
{
bool isExpanded = false; // Keep track of the current state to toggle
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button(isExpanded ? "Collapse Hierarchy" : "Expand Hierarchy"))
{
isExpanded = !isExpanded; // Toggle state
ToggleHierarchyExpansion(target as GameObject, isExpanded);
}
}
private void ToggleHierarchyExpansion(GameObject obj, bool expand)
{
System.Type hierarchyWindowType = typeof(Editor).Assembly.GetType("UnityEditor.SceneHierarchyWindow");
EditorWindow hierarchyWindow = EditorWindow.GetWindow(hierarchyWindowType);
MethodInfo expandMethodInfo = hierarchyWindowType.GetMethod("SetExpandedRecursive");
if (expandMethodInfo != null)
{
expandMethodInfo.Invoke(hierarchyWindow, new object[] { obj.GetInstanceID(), expand });
}
else
{
Debug.LogError("Failed to find method 'SetExpandedRecursive'.");
}
}
}

Подробнее здесь: https://stackoverflow.com/questions/784 ... vels-in-th