feat(fix-system): 整合维修面板灯光系统并重构面板结构

Made-with: Cursor
This commit is contained in:
2026-03-05 19:11:12 +08:00
parent cb49557aed
commit bc369bd86e
17 changed files with 1208 additions and 90 deletions
@@ -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