protected override string GetToolTipText(Object item) { var gameObject = item as GameObject; var hierarchyPath = string.Empty; if (gameObject != null) { hierarchyPath = PathUtility.Combine(UnityUtility.GetChildHierarchyPath(null, gameObject), gameObject.transform.name); } return(hierarchyPath); }
void OnGUI() { var e = Event.current; if (!initialized) { Initialize(); } // 削除されたオブジェクトを除外. raycastResults = raycastResults.Where(x => !UnityUtility.IsNull(x.gameObject)).ToArray(); if (Application.isPlaying) { if (raycastResults.IsEmpty()) { using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar, GUILayout.Height(15f))) { GUILayout.Label(infoIconContent, GUILayout.Width(infoIconContent.image.width + 3.5f)); GUILayout.Label("Click GameView to search for objects."); } } } else { using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar, GUILayout.Height(15f))) { GUILayout.Label(infoIconContent, GUILayout.Width(infoIconContent.image.width + 3.5f)); GUILayout.Label("Works in play mode."); } } if (raycastResults.Any()) { GUILayout.Space(3f); var labelStyle = new GUIStyle(GUI.skin.label); labelStyle.alignment = TextAnchor.MiddleLeft; var originIconSize = EditorGUIUtility.GetIconSize(); var iconSize = new Vector2(16f, 16f); EditorGUIUtility.SetIconSize(iconSize); using (var scrollView = new EditorGUILayout.ScrollViewScope(scrollPosition)) { foreach (var raycastResult in raycastResults) { var gameObject = raycastResult.gameObject; var thumbnail = (Texture)AssetPreview.GetMiniThumbnail(gameObject); using (new EditorGUILayout.HorizontalScope()) { using (new EditorGUILayout.HorizontalScope()) { GUILayout.Space(3f); //------ icon ------ var hierarchyPath = UnityUtility.GetChildHierarchyPath(null, gameObject); var toolTipText = PathUtility.Combine(hierarchyPath, gameObject.transform.name); var originLabelWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 0f; var iconContent = new GUIContent(thumbnail, toolTipText); // アイコンが見切れるのでサイズを補正. GUILayout.Label(iconContent, labelStyle, GUILayout.Width(iconSize.x + 3.5f)); EditorGUIUtility.labelWidth = originLabelWidth; //------ label ------ var labelText = gameObject.name; var labelContent = new GUIContent(labelText, toolTipText); GUILayout.Label(labelContent, labelStyle, GUILayout.Height(18f)); GUILayout.FlexibleSpace(); //------ depth ------ var depthText = raycastResult.depth.ToString(); var depthContent = new GUIContent(depthText); GUILayout.Label(depthContent, labelStyle, GUILayout.Height(18f)); GUILayout.Space(5f); } //------ mouse action ------ var rect = GUILayoutUtility.GetLastRect(); if (rect.Contains(e.mousePosition)) { switch (e.button) { case 0: Selection.activeGameObject = gameObject; break; } } } } EditorGUIUtility.SetIconSize(originIconSize); scrollPosition = scrollView.scrollPosition; } GUILayout.Space(3f); } }