반응형
용도
Editor 툴 개발 시, 별도의 EditorWindow를 띄워 툴 조작이 필요한 경우 SerializedProperty 객체를 참조하는 방식으로 구현.
EditorWindow
using UnityEditor;
using UnityEngine;
public class CustomGradientEditorWindow : EditorWindow
{
public static void Open(SerializedProperty property, Object target)
{
CustomGradientEditorWindow window = CreateInstance<CustomGradientEditorWindow>();
window.titleContent = new GUIContent("CustomGradientEditorWindow");
window.gradientProperty = property;
window.targetObject = target;
window.ShowUtility();
}
private SerializedProperty gradientProperty;
private Object targetObject;
private void OnGUI()
{
if (gradientProperty == null || targetObject == null) return;
EditorGUI.BeginChangeCheck();
Gradient gradient = gradientProperty.gradientValue;
gradient = EditorGUILayout.GradientField(gradient);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(targetObject, "Edit Gradient");
gradientProperty.gradientValue = gradient;
gradientProperty.serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty(targetObject);
}
if (Event.current.keyCode == KeyCode.Escape)
{
Close();
}
}
// 다른 Window 클릭 이벤트
private void OnLostFocus()
{
// Close();
}
}
CustomEditor - Monobehaviour
using System;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(GradientObjectSample))]
public class GradientObject_Editor : Editor
{
private SerializedProperty gradientProperty;
private void OnEnable()
{
gradientProperty = serializedObject.FindProperty("gradient");
}
public override void OnInspectorGUI()
{
EditorGUILayout.PropertyField(gradientProperty);
if (GUILayout.Button("Custom Editor"))
{
CustomGradientEditorWindow.Open(gradientProperty, target);
}
}
}
public class GradientObjectSample : MonoBehaviour
{
[SerializeField] private Gradient gradient;
}
반응형
'Unity > Programming' 카테고리의 다른 글
Unity Package Manager My Assets(구매 에셋) 목록 CSV 추출 (0) | 2024.10.14 |
---|---|
유니티 URP RendererFeature 활성화 제어 스크립트 (1) | 2024.01.16 |
Shader Keyword & Variants 체크 툴 (1) | 2023.11.21 |
Script 에셋 경로 참조하기 (0) | 2023.04.04 |
Unity URP HLSL 쉐이더 템플릿 생성 스크립트 (0) | 2023.03.07 |
WRITTEN BY
- CatDarkGame
Technical Artist dhwlgn12@gmail.com
,