Note inspector调整,Static Window可开关,Log可复制清空
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Ichni.RhythmGame;
|
||||
@@ -14,12 +15,13 @@ namespace Ichni.Editor
|
||||
public bool isSceneCameraActive;
|
||||
public SceneCamera sceneCamera;
|
||||
public float sceneCameraMoveSpeed;
|
||||
public float sceneCameraRotateSpeed;
|
||||
|
||||
public GameCamera gameCamera;
|
||||
public bool haveGameCamera => gameCamera != null;
|
||||
|
||||
public BaseElement_BM matchedBM { get; set; }
|
||||
|
||||
|
||||
public void SwitchCamera()
|
||||
{
|
||||
if (!haveGameCamera)
|
||||
|
||||
@@ -2,47 +2,82 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Ichni.Editor
|
||||
{
|
||||
public class InputListener : MonoBehaviour
|
||||
public partial class InputListener : MonoBehaviour
|
||||
{
|
||||
private PointerEventData pointerEventData;
|
||||
public EventSystem eventSystem;
|
||||
public List<GraphicRaycaster> graphicRaycasters;
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (EditorManager.instance.cameraManager.isSceneCameraActive)
|
||||
if (EditorManager.instance.cameraManager.isSceneCameraActive ||
|
||||
!Keyboard.current.leftCtrlKey.isPressed) // 场景相机的移动和旋转
|
||||
{
|
||||
float cameraSpeed = EditorManager.instance.cameraManager.sceneCameraMoveSpeed * Time.deltaTime;
|
||||
float cameraMoveSpeed = EditorManager.instance.cameraManager.sceneCameraMoveSpeed * Time.deltaTime;
|
||||
Transform sceneCameraTransform = EditorManager.instance.cameraManager.sceneCamera.transform;
|
||||
if (Keyboard.current.wKey.isPressed)
|
||||
{
|
||||
sceneCameraTransform.position += sceneCameraTransform.forward * cameraSpeed;
|
||||
sceneCameraTransform.position += sceneCameraTransform.forward * cameraMoveSpeed;
|
||||
}
|
||||
if (Keyboard.current.sKey.isPressed)
|
||||
{
|
||||
sceneCameraTransform.position -= sceneCameraTransform.forward * cameraSpeed;
|
||||
sceneCameraTransform.position -= sceneCameraTransform.forward * cameraMoveSpeed;
|
||||
}
|
||||
if (Keyboard.current.dKey.isPressed)
|
||||
{
|
||||
sceneCameraTransform.position += sceneCameraTransform.right * cameraSpeed;
|
||||
sceneCameraTransform.position += sceneCameraTransform.right * cameraMoveSpeed;
|
||||
}
|
||||
if (Keyboard.current.aKey.isPressed)
|
||||
{
|
||||
sceneCameraTransform.position -= sceneCameraTransform.right * cameraSpeed;
|
||||
sceneCameraTransform.position -= sceneCameraTransform.right * cameraMoveSpeed;
|
||||
}
|
||||
if (Keyboard.current.spaceKey.isPressed)
|
||||
if (Keyboard.current.eKey.isPressed)
|
||||
{
|
||||
sceneCameraTransform.position += sceneCameraTransform.up * cameraSpeed;
|
||||
sceneCameraTransform.position += sceneCameraTransform.up * cameraMoveSpeed;
|
||||
}
|
||||
if (Keyboard.current.leftShiftKey.isPressed)
|
||||
if (Keyboard.current.qKey.isPressed)
|
||||
{
|
||||
sceneCameraTransform.position -= sceneCameraTransform.up * cameraSpeed;
|
||||
sceneCameraTransform.position -= sceneCameraTransform.up * cameraMoveSpeed;
|
||||
}
|
||||
|
||||
bool isPointerOverUI = IsPointerOverUI(out GameObject hoveredUI);
|
||||
|
||||
if (Mouse.current.rightButton.isPressed && !isPointerOverUI)
|
||||
{
|
||||
float cameraRotateSpeed = EditorManager.instance.cameraManager.sceneCameraRotateSpeed * Time.deltaTime;
|
||||
Vector2 mouseDelta = Mouse.current.delta.ReadValue();
|
||||
sceneCameraTransform.Rotate(Vector3.up, -mouseDelta.x * cameraRotateSpeed, Space.World);
|
||||
sceneCameraTransform.Rotate(sceneCameraTransform.right, mouseDelta.y * cameraRotateSpeed, Space.World);
|
||||
}
|
||||
else if (isPointerOverUI)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (eventSystem.currentSelectedGameObject == null &&
|
||||
Keyboard.current.enterKey.wasPressedThisFrame) // 播放或暂停音乐
|
||||
{
|
||||
if (!EditorManager.instance.uiManager.timeline.musicPlayer.isPlaying)
|
||||
{
|
||||
EditorManager.instance.uiManager.timeline.musicPlayer.PlayMusic();
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorManager.instance.uiManager.timeline.musicPlayer.PauseMusic();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Keyboard.current.leftCtrlKey.isPressed)
|
||||
if (Keyboard.current.leftCtrlKey.isPressed) // 快捷键
|
||||
{
|
||||
// 保存和导出
|
||||
if (Keyboard.current.sKey.wasPressedThisFrame)
|
||||
{
|
||||
EditorManager.instance.projectManager.saveManager.Save();
|
||||
@@ -52,6 +87,7 @@ namespace Ichni.Editor
|
||||
EditorManager.instance.projectManager.exportManager.Export();
|
||||
}
|
||||
|
||||
// 复制粘贴删除
|
||||
if (Keyboard.current.cKey.wasPressedThisFrame)
|
||||
{
|
||||
EditorManager.instance.operationManager.CopyPasteDeleteModule.CopyElement(EditorManager.instance.operationManager.currentSelectedElement);
|
||||
@@ -60,7 +96,12 @@ namespace Ichni.Editor
|
||||
{
|
||||
EditorManager.instance.operationManager.CopyPasteDeleteModule.PasteElement(EditorManager.instance.operationManager.currentSelectedElement);
|
||||
}
|
||||
else if (Keyboard.current.dKey.wasPressedThisFrame)
|
||||
{
|
||||
EditorManager.instance.operationManager.currentSelectedElement.Delete();
|
||||
}
|
||||
|
||||
// 开关移动设备分辨率提示
|
||||
if (Keyboard.current.digit1Key.wasPressedThisFrame)
|
||||
{
|
||||
EditorManager.instance.uiManager.mainPage.resolutionHints.SetPhoneFrame();
|
||||
@@ -76,4 +117,39 @@ namespace Ichni.Editor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public partial class InputListener
|
||||
{
|
||||
public bool IsPointerOverUI(out GameObject hoveredUI)
|
||||
{
|
||||
hoveredUI = null;
|
||||
if (eventSystem == null || graphicRaycasters.Count == 0)
|
||||
return false;
|
||||
|
||||
pointerEventData = new PointerEventData(eventSystem)
|
||||
{
|
||||
position = Mouse.current.position.ReadValue()
|
||||
};
|
||||
|
||||
List<RaycastResult> allResults = new List<RaycastResult>();
|
||||
|
||||
// 遍历所有 Canvas 上的 GraphicRaycaster
|
||||
foreach (var raycaster in graphicRaycasters)
|
||||
{
|
||||
List<RaycastResult> results = new List<RaycastResult>();
|
||||
raycaster.Raycast(pointerEventData, results);
|
||||
allResults.AddRange(results);
|
||||
}
|
||||
|
||||
if (allResults.Count > 0)
|
||||
{
|
||||
// 按照 sortingOrder 获取最前面的 UI 物体
|
||||
allResults.Sort((a, b) => b.sortingOrder.CompareTo(a.sortingOrder));
|
||||
hoveredUI = allResults[0].gameObject;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,11 +30,12 @@ namespace Ichni
|
||||
LoadThemeBundle("departure_to_multiverse");
|
||||
}
|
||||
|
||||
public ThemeBundle GetThemeBundle(string themeBundleName)
|
||||
public bool TryGetThemeBundle(string themeBundleName, out ThemeBundle themeBundle)
|
||||
{
|
||||
return loadedThemeBundleList.Find(bundle => bundle.themeBundleName == themeBundleName);
|
||||
themeBundle = loadedThemeBundleList.Find(bundle => bundle.themeBundleName == themeBundleName);
|
||||
return themeBundle != null;
|
||||
}
|
||||
|
||||
|
||||
public T GetObject<T>(string themeBundleName, string objectName) where T : class
|
||||
{
|
||||
return loadedThemeBundleList.Find(bundle => bundle.themeBundleName == themeBundleName)?.GetObject<T>(objectName);
|
||||
|
||||
Reference in New Issue
Block a user