60 lines
2.0 KiB
C#
60 lines
2.0 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
[CustomEditor(typeof(RoomTrigger))]
|
|
public class RoomTriggerEditor : Editor
|
|
{
|
|
SerializedProperty roomSceneAsset;
|
|
SerializedProperty roomSceneName;
|
|
|
|
private void OnEnable()
|
|
{
|
|
roomSceneAsset = serializedObject.FindProperty("roomSceneAsset");
|
|
roomSceneName = serializedObject.FindProperty("roomSceneName");
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
serializedObject.Update();
|
|
|
|
RoomTrigger roomTrigger = (RoomTrigger)target;
|
|
|
|
// Draw όλα τα άλλα properties (εκτός από αυτά που διαχειριζόμαστε ειδικά)
|
|
DrawPropertiesExcluding(serializedObject, "roomSceneAsset", "roomSceneName");
|
|
|
|
EditorGUILayout.Space();
|
|
EditorGUILayout.LabelField("Room Scene Settings", EditorStyles.boldLabel);
|
|
|
|
#if UNITY_EDITOR
|
|
EditorGUILayout.PropertyField(roomSceneAsset, new GUIContent("Room Scene Asset"));
|
|
|
|
if (GUILayout.Button("Assign Current Scene as Asset"))
|
|
{
|
|
string currentSceneName = roomTrigger.gameObject.scene.name;
|
|
|
|
string[] guids = AssetDatabase.FindAssets(currentSceneName + " t:SceneAsset");
|
|
if (guids.Length > 0)
|
|
{
|
|
string path = AssetDatabase.GUIDToAssetPath(guids[0]);
|
|
SceneAsset foundAsset = AssetDatabase.LoadAssetAtPath<SceneAsset>(path);
|
|
if (foundAsset != null)
|
|
{
|
|
roomSceneAsset.objectReferenceValue = foundAsset;
|
|
Debug.Log($"[RoomTriggerEditor] Assigned current scene '{foundAsset.name}' to RoomTrigger.");
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning($"[RoomTriggerEditor] SceneAsset not found for current scene '{currentSceneName}'.");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Debug.LogWarning($"[RoomTriggerEditor] No SceneAsset found matching '{currentSceneName}'.");
|
|
}
|
|
}
|
|
#endif
|
|
|
|
serializedObject.ApplyModifiedProperties();
|
|
}
|
|
}
|