/// <summary> /// TreeViewの項目を作る /// </summary> private CanvasTreeViewItem CreateItem(string name, string valueString = null) { var item = new CanvasTreeViewItem(name, valueString) { id = _idCount++ }; return(item); }
/// <summary> /// TreeViewの項目を作る(Object指定) /// </summary> private CanvasTreeViewItem CreateItem <T>(string name, string valueString, T unityObject) where T : Object { var item = new CanvasTreeViewItem(name, valueString, unityObject, typeof(T)) { id = _idCount++ }; return(item); }
/// <summary> /// 各セルのGUIを描画する /// </summary> private void CellGUI(Rect rect, CanvasTreeViewItem item, CanvasColumnType columnType, RowGUIArgs args) { switch (columnType) { case CanvasColumnType.Name: args.rowRect = rect; base.RowGUI(args); break; case CanvasColumnType.Note: var canvas = item.unityObject as Canvas; if (canvas != null) { if (IsInactiveSubCanvas(canvas)) { var redTextStyle = new GUIStyle(EditorStyles.label) { normal = new GUIStyleState { textColor = Color.red, } }; EditorGUI.LabelField(rect, new GUIContent("Inactive Sub-canvas"), redTextStyle); } else if (canvas.gameObject.activeInHierarchy == false) { EditorGUI.LabelField(rect, new GUIContent("Inactive Canvas")); } } break; case CanvasColumnType.Object: if (item.hasUnityObject) { var obj = item.unityObject; var objectContent = EditorGUIUtility.ObjectContent(obj, item.objectType); var objectStyle = new GUIStyle(EditorStyles.textField) { imagePosition = obj ? ImagePosition.ImageLeft : ImagePosition.TextOnly }; var originalSize = EditorGUIUtility.GetIconSize(); EditorGUIUtility.SetIconSize(new Vector2(10, 10)); if (GUI.Button(rect, objectContent, objectStyle) && obj) { EditorGUIUtility.PingObject(obj); Selection.activeObject = obj; } EditorGUIUtility.SetIconSize(originalSize); } break; } }
protected override IList <TreeViewItem> BuildRows(TreeViewItem root) { //Debug.Log(sortCol + " " + sortColumn.sortedAscending); profilerState.lastFrame = profilerState.profilerWindow.GetActiveVisibleFrameIndex(); var rows = new List <TreeViewItem>(); if (property == null || !property.frameDataReady) { return(rows); } m_AllCanvasesItem = new RootTreeViewItem(); SetExpanded(m_AllCanvasesItem.id, true); root.AddChild(m_AllCanvasesItem); UISystemProfilerInfo[] UISystemData = property.GetUISystemProfilerInfo(); int[] allBatchesInstanceIDs = property.GetUISystemBatchInstanceIDs(); if (UISystemData != null) { Dictionary <int, TreeViewItem> map = new Dictionary <int, TreeViewItem>(); int batchIndex = 0; foreach (var data in UISystemData) { TreeViewItem parent; if (!map.TryGetValue(data.parentId, out parent)) { parent = m_AllCanvasesItem; m_AllCanvasesItem.totalBatchCount += data.totalBatchCount; m_AllCanvasesItem.totalVertexCount += data.totalVertexCount; m_AllCanvasesItem.gameObjectCount += data.instanceIDsCount; } string name; BaseTreeViewItem canvasTreeViewItem; if (data.isBatch) { name = "Batch " + batchIndex++; canvasTreeViewItem = new BatchTreeViewItem(data, parent.depth + 1, name, allBatchesInstanceIDs); } else { name = property.GetUISystemProfilerNameByOffset(data.objectNameOffset); canvasTreeViewItem = new CanvasTreeViewItem(data, parent.depth + 1, name); batchIndex = 0; map[data.objectInstanceId] = canvasTreeViewItem; } if (!IsExpanded(parent.id)) { if (!parent.hasChildren) { parent.children = CreateChildListForCollapsedParent(); } continue; } parent.AddChild(canvasTreeViewItem); } m_Comparer.Col = Column.Element; if (multiColumnHeader.sortedColumnIndex != -1) { m_Comparer.Col = (Column)multiColumnHeader.sortedColumnIndex; } m_Comparer.isAscending = multiColumnHeader.GetColumn((int)m_Comparer.Col).sortedAscending; SetupRows(m_AllCanvasesItem, rows); } return(rows); }