This commit is contained in:
2025-06-03 21:50:35 +08:00
parent 5bd103ceec
commit c8b0f8b375
46 changed files with 6296 additions and 1914 deletions
@@ -8,6 +8,7 @@ using DG.Tweening;
using JetBrains.Annotations;
using Newtonsoft.Json;
using UnityEngine;
using System.Collections;
namespace AibisDream.FixSystem
{
@@ -27,10 +28,17 @@ namespace AibisDream.FixSystem
private SpriteRenderer _targetSpriteRenderer; // 目标的 SpriteRenderer
private SpriteRenderer _cutSpriteRenderer;
private SpriteRenderer _cutTextRenderer; // 添加cutText的SpriteRenderer引用
private CutLine _cutLine;
[Header("CutText闪烁效果")]
private float cutTextFlickerThreshold = 0.7f; // 开始闪烁的阈值
private float cutTextFlickerInterval = 0.1f; // 闪烁间隔
private float cutTextFlickerTimer = 0f; // 闪烁计时器
private bool isCutTextFlickering = false; // 是否正在闪烁
private Coroutine flickerCoroutine; // 闪烁协程引用
#endregion
// 模块基本数据
@@ -54,6 +62,10 @@ namespace AibisDream.FixSystem
_originalMaterial = _targetSpriteRenderer.GetComponent<SpriteRenderer>().material;
_cutSpriteRenderer = transform.Find("Cut Pic")?.GetComponent<SpriteRenderer>();
if (_cutSpriteRenderer != null)
{
_cutTextRenderer = _cutSpriteRenderer.transform.Find("Cut Text")?.GetComponent<SpriteRenderer>(); // 初始化cutText的SpriteRenderer
}
_highlightMaterial = Resources.Load<Material>("Materials/HighlightMaterial");
_alarmMaterial = Resources.Load<Material>("Materials/AlarmMaterial");
@@ -128,9 +140,16 @@ namespace AibisDream.FixSystem
{
_bodyModuleSystem.RemoveModule(this);
DialogController.Instance?.StartDialogNode($"{data.moduleName}CutDown");
EnumEventSystem.Global.Send(EventEnum.CutEnd);
Destroy(gameObject);
DialogController.Instance?.StartDialogNode($"{data.moduleName}CutDown");
EnumEventSystem.Global.Send(EventEnum.CutEnd);
Destroy(gameObject);
}
public void SetCutTextVisible(bool visible)
{
if (_cutTextRenderer != null)
{
_cutTextRenderer.enabled = visible;
}
}
public SpriteRenderer GetCutSpriteRenderer()
@@ -138,6 +157,54 @@ namespace AibisDream.FixSystem
return _cutSpriteRenderer;
}
public void StartCutTextFlicker()
{
if (!isCutTextFlickering)
{
isCutTextFlickering = true;
if (flickerCoroutine != null)
{
StopCoroutine(flickerCoroutine);
}
flickerCoroutine = StartCoroutine(CutTextFlickerCoroutine());
}
}
public void StopCutTextFlicker()
{
isCutTextFlickering = false;
if (flickerCoroutine != null)
{
StopCoroutine(flickerCoroutine);
flickerCoroutine = null;
}
// 确保最终状态是可见的
SetCutTextVisible(true);
}
private IEnumerator CutTextFlickerCoroutine()
{
while (isCutTextFlickering)
{
// 随机决定是否显示
bool shouldShow = UnityEngine.Random.value > 0.5f;
SetCutTextVisible(shouldShow);
// 随机等待时间,模拟接触不良效果
float waitTime = UnityEngine.Random.Range(cutTextFlickerInterval * 0.5f, cutTextFlickerInterval * 1.5f);
yield return new WaitForSeconds(waitTime);
}
}
public void UpdateCutProgress(float progress)
{
// 检查是否达到闪烁阈值
if (!isCutTextFlickering && progress >= cutTextFlickerThreshold)
{
StartCutTextFlicker();
}
}
// public void EnableCut()
// {
// // 打开或获取CutLine