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(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(); } }