using System; using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using Ichni.RhythmGame.Beatmap; using UnityEngine; using UnityEngine.Serialization; namespace Ichni.Editor { public class CameraManager : MonoBehaviour, IBaseElement { public Camera backgroundCamera; public bool isSceneCameraActive; public SceneCamera sceneCamera; public float sceneCameraMoveSpeed; public float sceneCameraRotateSpeed; public GameCamera gameCamera; public bool haveGameCamera => gameCamera != null; public Camera currentCamera => haveGameCamera && !isSceneCameraActive ? gameCamera.gameCamera : sceneCamera.sceneCamera; public BaseElement_BM matchedBM { get; set; } public void SwitchCamera() { if (!haveGameCamera) { LogWindow.Log("GameCamera is not assigned", Color.red); return; } isSceneCameraActive = !isSceneCameraActive; sceneCamera.sceneCamera.enabled = isSceneCameraActive; gameCamera.gameCamera.enabled = !isSceneCameraActive; EditorManager.instance.backgroundController.backgroundCanvas.worldCamera = currentCamera; } public void SetUpInspector() { string ShowCameraType() => isSceneCameraActive ? "Scene Camera" : "Game Camera"; IHaveInspection inspector = EditorManager.instance.uiManager.inspector; var container = inspector.GenerateContainer("Camera Manager"); //切换摄像机,设置场景相机 var cameraSettings = container.GenerateSubcontainer(3); var cameraTypeText = inspector.GenerateHintText(this, cameraSettings, ShowCameraType); var switchCameraButton = inspector.GenerateButton(this, cameraSettings, "Switch Camera", SwitchCamera); var cameraMoveSpeedField = inspector.GenerateInputField(this, cameraSettings, "Scene Camera Move Speed", nameof(sceneCameraMoveSpeed)); sceneCamera.SetUpInspector(); } } }