- Unity 6.2 → 6.3 업그레이드 - Beautify URP 에셋 업데이트 - Stylized Water 3 에셋 제거 - PIDI Planar Reflections shadergraph 업데이트 - 각종 메타파일 및 에셋 파일 Unity 6.3 호환 업데이트 - lilToon, AmplifyShaderEditor 등 외부 에셋 설정 변경 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
134 lines
5.4 KiB
C#
134 lines
5.4 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
namespace Beautify.Universal {
|
|
|
|
[CustomEditor(typeof(BeautifySettings))]
|
|
public class BeautifySettingsEditor : Editor {
|
|
|
|
SerializedProperty sun;
|
|
SerializedProperty depthOfFieldTarget;
|
|
SerializedProperty depthOfFieldFocusPositionEnabled;
|
|
SerializedProperty depthOfFieldFocusPosition;
|
|
|
|
static GUIStyle sectionHeaderStyle;
|
|
static GUIStyle boxStyle;
|
|
static bool sunFoldout = true;
|
|
static bool dofFoldout = true;
|
|
|
|
void OnEnable() {
|
|
sun = serializedObject.FindProperty("sun");
|
|
depthOfFieldTarget = serializedObject.FindProperty("depthOfFieldTarget");
|
|
depthOfFieldFocusPositionEnabled = serializedObject.FindProperty("depthOfFieldFocusPositionEnabled");
|
|
depthOfFieldFocusPosition = serializedObject.FindProperty("depthOfFieldFocusPosition");
|
|
}
|
|
|
|
public override void OnInspectorGUI() {
|
|
serializedObject.Update();
|
|
|
|
SetupStyles();
|
|
|
|
// Header
|
|
EditorGUILayout.Space(5);
|
|
EditorGUILayout.LabelField("Beautify Scene Settings", EditorStyles.boldLabel);
|
|
EditorGUILayout.HelpBox("Configure scene-specific settings for Beautify effects. These settings override or complement the Volume profile settings.", MessageType.Info);
|
|
EditorGUILayout.Space(10);
|
|
|
|
// Sun Section
|
|
sunFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(sunFoldout, "Sun & Lighting");
|
|
if (sunFoldout) {
|
|
EditorGUILayout.BeginVertical(boxStyle);
|
|
EditorGUILayout.PropertyField(sun, new GUIContent("Sun Transform", "The directional light used for sun flares and other lighting effects"));
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
EditorGUILayout.EndFoldoutHeaderGroup();
|
|
|
|
EditorGUILayout.Space(5);
|
|
|
|
// Depth of Field Section
|
|
dofFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(dofFoldout, "Depth of Field");
|
|
if (dofFoldout) {
|
|
EditorGUILayout.BeginVertical(boxStyle);
|
|
|
|
// Target Transform
|
|
EditorGUILayout.LabelField("Follow Target Mode", EditorStyles.miniBoldLabel);
|
|
EditorGUILayout.PropertyField(depthOfFieldTarget, new GUIContent("Target", "Transform to focus on when using FollowTarget focus mode"));
|
|
|
|
EditorGUILayout.Space(8);
|
|
|
|
// Focus Position
|
|
EditorGUILayout.LabelField("Follow Position Mode", EditorStyles.miniBoldLabel);
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
EditorGUILayout.PropertyField(depthOfFieldFocusPositionEnabled, new GUIContent("Override Focus Position", "Enable to use this position instead of the Volume's Focus Position setting"));
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUI.BeginDisabledGroup(!depthOfFieldFocusPositionEnabled.boolValue);
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(depthOfFieldFocusPosition, new GUIContent("Focus Position", "World position to focus on when using FollowPosition focus mode"));
|
|
EditorGUI.indentLevel--;
|
|
EditorGUI.EndDisabledGroup();
|
|
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
EditorGUILayout.EndFoldoutHeaderGroup();
|
|
|
|
EditorGUILayout.Space(10);
|
|
|
|
// Utility buttons
|
|
EditorGUILayout.BeginHorizontal();
|
|
if (GUILayout.Button("Select Beautify Volume")) {
|
|
SelectBeautifyVolume();
|
|
}
|
|
if (GUILayout.Button("Reset to Defaults")) {
|
|
ResetToDefaults();
|
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
serializedObject.ApplyModifiedProperties();
|
|
}
|
|
|
|
void SetupStyles() {
|
|
if (sectionHeaderStyle == null) {
|
|
sectionHeaderStyle = new GUIStyle(EditorStyles.foldoutHeader) {
|
|
fontStyle = FontStyle.Bold,
|
|
fontSize = 12
|
|
};
|
|
}
|
|
|
|
if (boxStyle == null) {
|
|
boxStyle = new GUIStyle("box") {
|
|
padding = new RectOffset(10, 10, 10, 10),
|
|
margin = new RectOffset(0, 0, 5, 5)
|
|
};
|
|
}
|
|
}
|
|
|
|
void SelectBeautifyVolume() {
|
|
#if UNITY_2023_1_OR_NEWER
|
|
var volumes = FindObjectsByType<UnityEngine.Rendering.Volume>(FindObjectsSortMode.None);
|
|
#else
|
|
var volumes = FindObjectsOfType<UnityEngine.Rendering.Volume>();
|
|
#endif
|
|
foreach (var volume in volumes) {
|
|
if (volume.sharedProfile != null && volume.sharedProfile.TryGet<Beautify>(out var beautify)) {
|
|
Selection.activeObject = volume.gameObject;
|
|
EditorGUIUtility.PingObject(volume.gameObject);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void ResetToDefaults() {
|
|
Undo.RecordObject(target, "Reset Beautify Settings");
|
|
BeautifySettings settings = (BeautifySettings)target;
|
|
settings.sun = null;
|
|
settings.depthOfFieldTarget = null;
|
|
settings.depthOfFieldFocusPositionEnabled = false;
|
|
settings.depthOfFieldFocusPosition = Vector3.zero;
|
|
EditorUtility.SetDirty(target);
|
|
}
|
|
}
|
|
}
|
|
|