//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using UnityEditor; using UnityEngine; using UnityGameFramework.Runtime; namespace UnityGameFramework.Editor { [CustomEditor(typeof(SceneComponent))] internal sealed class SceneComponentInspector : GameFrameworkInspector { private SerializedProperty m_EnableLoadSceneUpdateEvent = null; private SerializedProperty m_EnableLoadSceneDependencyAssetEvent = null; public override void OnInspectorGUI() { base.OnInspectorGUI(); serializedObject.Update(); SceneComponent t = (SceneComponent)target; EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode); { EditorGUILayout.PropertyField(m_EnableLoadSceneUpdateEvent); EditorGUILayout.PropertyField(m_EnableLoadSceneDependencyAssetEvent); } EditorGUI.EndDisabledGroup(); serializedObject.ApplyModifiedProperties(); if (EditorApplication.isPlaying && IsPrefabInHierarchy(t.gameObject)) { EditorGUILayout.LabelField("Loaded Scene Asset Names", GetSceneNameString(t.GetLoadedSceneAssetNames())); EditorGUILayout.LabelField("Loading Scene Asset Names", GetSceneNameString(t.GetLoadingSceneAssetNames())); EditorGUILayout.LabelField("Unloading Scene Asset Names", GetSceneNameString(t.GetUnloadingSceneAssetNames())); EditorGUILayout.ObjectField("Main Camera", t.MainCamera, typeof(Camera), true); Repaint(); } } private void OnEnable() { m_EnableLoadSceneUpdateEvent = serializedObject.FindProperty("m_EnableLoadSceneUpdateEvent"); m_EnableLoadSceneDependencyAssetEvent = serializedObject.FindProperty("m_EnableLoadSceneDependencyAssetEvent"); } private string GetSceneNameString(string[] sceneAssetNames) { if (sceneAssetNames == null || sceneAssetNames.Length <= 0) { return ""; } string sceneNameString = string.Empty; foreach (string sceneAssetName in sceneAssetNames) { if (!string.IsNullOrEmpty(sceneNameString)) { sceneNameString += ", "; } sceneNameString += SceneComponent.GetSceneName(sceneAssetName); } return sceneNameString; } } }