Место общения программистов C#
Anonymous
Как развернуть все игровые и дочерние объекты на всех уровнях глубины иерархии одним нажатием кнопки с помощью скрипта р
Сообщение
Anonymous » 14 май 2024, 04:44
скрипт использует отражение.
он работает почти идеально и расширяет все объекты в иерархии, но по какой-то причине некоторые объекты не расширяются.
Код: Выделить всё
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
1715651080
Anonymous
скрипт использует отражение. он работает почти идеально и расширяет все объекты в иерархии, но по какой-то причине некоторые объекты не расширяются. [code]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'."); } } } [/code] [img]https://i.sstatic.net/82EqMnIT.jpg[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/78475377/how-to-expand-all-the-gameobjects-and-children-objects-in-all-depth-levels-in-th[/url]