feat(fix-system): 支持 Fix 系统任务面板与身体模块状态读档恢复

This commit is contained in:
2026-06-29 15:58:35 +08:00
parent 0f681b518e
commit 2d43af4827
7 changed files with 164 additions and 27 deletions
@@ -28,6 +28,10 @@ namespace AibisDream.FixSystem
/// Yarn 可能在 Start 里异步加载材质完成前就调用 ModuleHightLight,需记下来待加载后再套材质。
/// </summary>
private bool _wantsHighlight;
private bool _wantsAlarm;
public bool IsHighlighted => _wantsHighlight;
public bool IsAlarmed => _wantsAlarm;
[SerializeField]
private SpriteRenderer targetSpriteRenderer; // 目标的 SpriteRenderer
@@ -99,7 +103,7 @@ namespace AibisDream.FixSystem
else
Debug.LogError("[BodyModule] Failed to load AlarmMaterial");
ApplyHighlightVisual();
ApplyModuleVisual();
}
#region
@@ -165,23 +169,25 @@ namespace AibisDream.FixSystem
public void Highlight(bool enable)
{
_wantsHighlight = enable;
ApplyHighlightVisual();
}
private void ApplyHighlightVisual()
{
if (targetSpriteRenderer == null || _highlightMaterial == null) return;
if (_alarmMaterial != null && targetSpriteRenderer.material == _alarmMaterial) return;
targetSpriteRenderer.material = _wantsHighlight ? _highlightMaterial : _originalMaterial;
ApplyModuleVisual();
}
public void Alarm(bool enable)
{
if (targetSpriteRenderer != null && _alarmMaterial != null)
{
targetSpriteRenderer.material = enable ? _alarmMaterial : _originalMaterial;
}
_wantsAlarm = enable;
ApplyModuleVisual();
}
private void ApplyModuleVisual()
{
if (targetSpriteRenderer == null) return;
if (_wantsAlarm && _alarmMaterial != null)
targetSpriteRenderer.material = _alarmMaterial;
else if (_wantsHighlight && _highlightMaterial != null)
targetSpriteRenderer.material = _highlightMaterial;
else
targetSpriteRenderer.material = _originalMaterial;
}
#endregion