커스텀 콘솔 (Custom Console)
Unity Console을 커스텀 해서 CallStack에 있는 정보를 좀 더 편하게 이동하기 위해서 만들었다.
반응형
< 유용한 기능>
Console 창이 작아도 노출이 가능하고 내용도 확인이 편하다. 줄바꿈이나 다른 영향을 받지 않는다.
특정 Console의 Log 마우스 오른쪽으로 해당 메뉴를 선택후 Unity에 지정된 IDE로 연결이 가능하다.(바로가기)
< Log Type 에 따른 커스텀 >
Log Type 에 따른 다른 표기도 가능하다.
CallStack을 기반으로 해당 위치로 이동하게 처리를 했다.
< PopupWindow 코드 >
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace CustomConsole
{
public class CustomConsoleInfo
{
public string guid;
public int line;
public string functionName;
}
public class CustomConsoleMenu : PopupWindowContent
{
private List<CustomConsoleInfo> callStackTargets = default;
public bool allowDuplicateNames { get; set; }
private GUIStyle buttonStyle; // 왼쪽 정렬 버튼 스타일
private GUIStyle ButtonStyle
{
get
{
if(buttonStyle == null)
{
buttonStyle = new GUIStyle(GUI.skin.button);
buttonStyle.alignment = TextAnchor.MiddleLeft; // 왼쪽 정렬
buttonStyle.fixedHeight = 18; // 고정 높이 설정
}
return buttonStyle;
}
}
public CustomConsoleMenu SetList(List<CustomConsoleInfo> _list)
{
callStackTargets = _list;
return this;
}
public override Vector2 GetWindowSize()
{
float maxWidth = 0;
float totalHeight = 0;
foreach (var item in callStackTargets)
{
// 텍스트와 아이콘을 포함한 너비 계산
Vector2 size = ButtonStyle.CalcSize(new GUIContent(item.functionName));
maxWidth = Mathf.Max(maxWidth, size.x + 10);
totalHeight += (size.y + 2);
}
return new Vector2(maxWidth, totalHeight);
}
public CustomConsoleMenu ShowAtMouse()
{
Vector2 mousePosition = Event.current.mousePosition;
Rect rect = new Rect(mousePosition.x, mousePosition.y, 0, 0);
PopupWindow.Show(rect, this);
return this;
}
public override void OnGUI(Rect rect)
{
if(callStackTargets == null)
return;
if (callStackTargets.Count <= 0)
return;
for (int i = 0; i < callStackTargets.Count; i++)
{
var stackFrame = callStackTargets[i];
if (GUILayout.Button(new GUIContent(stackFrame.functionName), ButtonStyle))
{
var assetPath = AssetDatabase.GUIDToAssetPath(stackFrame.guid);
AssetDatabase.OpenAsset(AssetDatabase.LoadMainAssetAtPath(assetPath), stackFrame.line);
editorWindow.Close();
}
}
}
}
}
★★★★☆
반응형
'개발 > Unity Editor Tool)' 카테고리의 다른 글
UnityEditorTool) Color Preset (포토샵 팔레트 기능 만들기) (0) | 2024.11.14 |
---|
댓글