feat(fix-system): 整合维修面板灯光系统并重构面板结构
Made-with: Cursor
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Kit;
|
||||
using UnityEngine;
|
||||
using Cinemachine;
|
||||
using System.Collections;
|
||||
|
||||
namespace AibisDream.FixSystem
|
||||
{
|
||||
@@ -12,12 +14,14 @@ namespace AibisDream.FixSystem
|
||||
{
|
||||
private void OnEnable()
|
||||
{
|
||||
RegisterCanvasCamera();
|
||||
RegisterPanels();
|
||||
RegisterScreenView();
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
UnRegisterCanvasCamera();
|
||||
_panelContainer.Clear();
|
||||
UnRegisterScreenView();
|
||||
}
|
||||
@@ -42,12 +46,68 @@ namespace AibisDream.FixSystem
|
||||
|
||||
#endregion
|
||||
|
||||
#region 光照系统
|
||||
|
||||
[Header("光照系统")]
|
||||
[SerializeField] private FixPanelLight panelLight;
|
||||
public FixPanelLight PanelLight => panelLight;
|
||||
|
||||
#endregion
|
||||
|
||||
#region 系统启动协调
|
||||
|
||||
/// <summary>
|
||||
/// 启动所有系统(协调灯光系统和 CablePanel 的启动顺序)
|
||||
/// </summary>
|
||||
public IEnumerator StartAllSystems()
|
||||
{
|
||||
// 1. 先启动 CablePanel 的系统自检
|
||||
var cablePanel = GetRepairPanel<CablePanel>();
|
||||
if (cablePanel != null)
|
||||
{
|
||||
yield return cablePanel.StartSystem();
|
||||
}
|
||||
|
||||
// 2. 再启动灯光序列
|
||||
if (panelLight != null)
|
||||
{
|
||||
yield return panelLight.StartPanelLightSequence();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置灯光状态,并同步更新相关面板的灯光效果
|
||||
/// </summary>
|
||||
public void SetLightState(LightState newState)
|
||||
{
|
||||
// 1. 更新主灯光系统
|
||||
if (panelLight != null)
|
||||
{
|
||||
panelLight.SetLightState(newState);
|
||||
}
|
||||
|
||||
// 2. 同步更新 CablePanel 的灯光效果
|
||||
var cablePanel = GetRepairPanel<CablePanel>();
|
||||
if (cablePanel != null)
|
||||
{
|
||||
cablePanel.UpdateBreathingLight(newState);
|
||||
cablePanel.UpdateECGWave(newState);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 屏幕相关操作
|
||||
[Header("默认相机")]
|
||||
[SerializeField] private CinemachineVirtualCamera fixPanelCamera;
|
||||
|
||||
[Header("默认气泡")]
|
||||
[SerializeField] private BubbleSlotGroup bubbleSlotGroup;
|
||||
public BubbleSlotGroup BubbleSlotGroup => bubbleSlotGroup;
|
||||
|
||||
[Header("默认画布")]
|
||||
[SerializeField] private Canvas canvas;
|
||||
|
||||
[Header("任务面板")]
|
||||
[SerializeField] private TaskPanel taskPanel;
|
||||
public TaskPanel TaskPanel => taskPanel;
|
||||
@@ -58,14 +118,29 @@ namespace AibisDream.FixSystem
|
||||
|
||||
private void RegisterScreenView()
|
||||
{
|
||||
// DialogUIManager.Instance.RegisterScreenView(DialogViewType.Screen, screenPanel);
|
||||
// DialogUIManager.Instance.RegisterScreenView(DialogViewType.Task, taskPanel);
|
||||
// 注册相机
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.BodyModule, fixPanelCamera);
|
||||
|
||||
DialogUIManager.Instance.RegisterScreenView(DialogViewType.Screen, screenPanel);
|
||||
DialogUIManager.Instance.RegisterScreenView(DialogViewType.Task, taskPanel);
|
||||
}
|
||||
|
||||
private void UnRegisterScreenView()
|
||||
{
|
||||
// DialogUIManager.Instance.UnRegisterScreenView(DialogViewType.Screen);
|
||||
// DialogUIManager.Instance.UnRegisterScreenView(DialogViewType.Task);
|
||||
CameraKit.Instance.UnRegisterCamera(CameraEnum.BodyModule);
|
||||
|
||||
DialogUIManager.Instance.UnRegisterScreenView(DialogViewType.Screen);
|
||||
DialogUIManager.Instance.UnRegisterScreenView(DialogViewType.Task);
|
||||
}
|
||||
|
||||
private void RegisterCanvasCamera()
|
||||
{
|
||||
canvas.worldCamera = Camera.main;
|
||||
}
|
||||
|
||||
private void UnRegisterCanvasCamera()
|
||||
{
|
||||
canvas.worldCamera = null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user