HierarchyViewColumnDescriptor
Provides a column descriptor used to register a new column in the HierarchyView and to control the display and customization of this column.
Read time 4 minutesLast updated 11 days ago
Definition
- Type: Class
- Namespace: Unity.Hierarchy
- Assembly: UnityEngine.HierarchyModule
public sealed class HierarchyViewColumnDescriptor
Remarks
The following example creates a column in the Hierarchy window that displays the icons of each component attached to a GameObject. It uses to register the column, configure its properties, and pair the column with a to populate each cell.
HierarchyViewColumnDescriptorHierarchyViewCellDescriptorThe example requires the USS file . To use this example, save the script and USS file in a folder called . Scripts in an folder can use the Hierarchy module API without additional setup. If you save the script outside of an folder, you must enable the Hierarchy built-in module in the Package Manager window, which also adds the module to your Player builds.
ComponentsColumn.ussAssets/Editor/ComponentsColumnEditorEditorAfter adding the script to your project, enable the new Components column in the Hierarchy window for it to display.
using Unity.Hierarchy;using Unity.Hierarchy.Editor;using UnityEditor;using UnityEngine;using UnityEngine.Pool;using UnityEngine.UIElements;namespace Unity.HierarchySamples.Editor{ class ComponentsColumn { const string k_ColumnId = "GameObject/Components"; const string k_IconRowUssClass = "component-icon-row"; const string k_ComponentIconUssClass = "component-icon"; static readonly ObjectPool<Image> s_ImagePool = new(() => new Image()); [InitializeOnLoadMethod] static void Initialize() { HierarchyWindow.BindView += OnBindView; } static void OnBindView(HierarchyWindow window, HierarchyView view) { view.styleSheets.Add(AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/Editor/ComponentsColumn/ComponentsColumn.uss")); } [HierarchyViewColumnDescriptor(k_ColumnId)] internal static void CreateColumnDesc(HierarchyViewColumnDescriptor desc) { desc.Title = "Components"; desc.Tooltip = "Show all Components of GameObject"; desc.DefaultPriority = 1000; desc.DefaultWidth = 100; } [HierarchyViewCellDescriptor(k_ColumnId, typeof(HierarchyGameObjectHandler))] internal static void CreateGameObjectCellDesc(HierarchyViewCellDescriptor desc) { desc.BindCell = cell => { // It's safe to cast cell.Handler to HierarchyGameObjectHandler here. This method has the // HierarchyViewCellDescriptor attribute on it with the HierarchyGameObjectHandler specified to it, // so this method is called only for nodes created by the HierarchyGameObjectHandler. HierarchyGameObjectHandler handler = (HierarchyGameObjectHandler)cell.Handler; GameObject gameObject = handler.GetGameObject(cell.Node); Component[] components = gameObject.GetComponents<Component>(); VisualElement iconRow = cell.Q(className: k_IconRowUssClass); if (iconRow == null) { iconRow = new VisualElement(); iconRow.AddToClassList(k_IconRowUssClass); iconRow.style.flexDirection = FlexDirection.Row; cell.Add(iconRow); } else { iconRow.Query<Image>(className: k_ComponentIconUssClass).ForEach(el => { el.RemoveFromHierarchy(); s_ImagePool.Release(el); }); } foreach (Component comp in components) { Texture2D icon = AssetPreview.GetMiniThumbnail(comp); if (!icon) continue; Image iconEl = s_ImagePool.Get(); iconEl.AddToClassList(k_ComponentIconUssClass); iconEl.image = icon; iconRow.Add(iconEl); } cell.IsDefaultValue = false; }; } }}
The following example shows how to style .
ComponentsColumn.uss.component-icon-row { justify-content: flex-end;}.component-icon { width: 14px; height: 14px; margin-left: 3px; margin-top: 3px;}
Fields
Value | Description |
|---|---|
| BindColumn | Callback triggered when the column is built and shown in the HierarchyView. |
| BindHeader | Callback that binds a custom header. |
| DestroyHeader | Callback triggered when the window is closed. |
| MakeHeader | Callback that creates a custom header. If null, the default header displays both the icon and text of the Name field. |
| UnbindColumn | Callback triggered when the column is about to be destroyed. |
| UnbindHeader | Callback triggered when the header is about to be destroyed or after domain reload. |
Constructors
Constructor | Description |
|---|---|
| HierarchyViewColumnDescriptor(System.String) | Creates a new HierarchyViewColumnDescriptor. |
Properties
Property | Description |
|---|---|
| DefaultPriority | Gets or sets the priority used to sort column order. A priority of 0 corresponds to the Name column in the Hierarchy. A negative priority places the column to the left of the Name column. A positive priority places the column to the right of the default Name column. |
| DefaultVisibility | Gets or sets whether the column is initially visible. |
| DefaultWidth | Gets or sets the default width when first instantiating the column. If you set it to a negative value, the column is assigned an arbitrary width. |
| Icon | Gets or sets the icon displayed in the header of the column. |
| Id | Gets the column identifier. HierarchyViewCellDescriptor instances use this identifier to register themselves with the column. |
| Title | Gets or sets the display name of the column. If null, the header is empty unless it contains an icon. |
| Tooltip | Gets or sets the tooltip shown when the user hovers over the header of this column. |
| UserData | Gets or sets user data associated with this descriptor. |