This commit is contained in:
2025-06-26 21:02:29 +08:00
parent 578387269a
commit 14089f66be
12 changed files with 3233 additions and 2817 deletions
@@ -74,10 +74,21 @@ namespace AibisDream
{
if (gearFollower != null)
{
// 停止所有DOTween动画
if (gearFollower.gameObject != null)
{
DOTween.Kill(gearFollower.gameObject);
}
gearFollower.ClearCutLine();
Destroy(gearFollower.gameObject);
DestroyImmediate(gearFollower.gameObject);
gearFollower = null;
}
// 重置状态
isCuttingMode = false;
isEntranceComplete = false;
isGearActive = false;
}
private void ActivateGear()
@@ -266,8 +277,25 @@ namespace AibisDream
_targetModule.StopCutTextFlicker();
}
// 清理GearFollower
if (gearFollower != null)
{
// 停止所有DOTween动画
if (gearFollower.gameObject != null)
{
DOTween.Kill(gearFollower.gameObject);
}
// 强制销毁GearFollower
DestroyImmediate(gearFollower.gameObject);
gearFollower = null;
}
if (entrancePanel != null)
{
// 停止面板的DOTween动画
DOTween.Kill(entrancePanel);
// 获取当前相机位置
Vector3 startPosition = GetPanelSpawnPosition();
@@ -277,14 +305,46 @@ namespace AibisDream
.OnComplete(() => {
Destroy(entrancePanel);
entrancePanel = null;
gearFollower = null;
});
}
else if (gearFollower != null)
}
private void OnDestroy()
{
// 从系统字典中注销
FixSystemCenter.SystemDic.Unregister<CuttingManager>();
// 清理相机注册
CameraKit.Instance.UnRegisterCamera(CameraEnum.CutEmo);
CameraKit.Instance.UnRegisterCamera(CameraEnum.CutMemory);
CameraKit.Instance.UnRegisterCamera(CameraEnum.CutLogic);
CameraKit.Instance.UnRegisterCamera(CameraEnum.CutEmoDeep);
CameraKit.Instance.UnRegisterCamera(CameraEnum.CutMemoryDeep);
CameraKit.Instance.UnRegisterCamera(CameraEnum.CutLogicDeep);
// 强制清理所有相关对象
if (gearFollower != null)
{
Destroy(gearFollower.gameObject);
// 如果gearFollower还在运行,强制停止
if (gearFollower.gameObject != null)
{
DestroyImmediate(gearFollower.gameObject);
}
gearFollower = null;
}
if (entrancePanel != null)
{
DestroyImmediate(entrancePanel);
entrancePanel = null;
}
// 重置状态
isCuttingMode = false;
isEntranceComplete = false;
isGearActive = false;
_targetModule = null;
_targetSpriteRenderer = null;
}
}
}
@@ -853,8 +853,74 @@ public class GearFollower : MonoBehaviour
if (cutCompleteSequence != null)
{
cutCompleteSequence.Kill();
cutCompleteSequence = null;
}
// 停止所有协程
StopAllCoroutines();
// 清理特效
if (cutLight != null)
{
cutLight.enabled = false;
}
if (sparkVFX != null)
{
sparkVFX.Stop();
}
// 清理切割线
if (cutLineRenderer != null)
{
cutLineRenderer.positionCount = 0;
}
// 停止音效
StopDrillSfxIfPlaying();
// 重置目标精灵状态
if (targetSpriteRenderer != null)
{
// 恢复原始状态
targetSpriteRenderer.transform.position = originalTargetPosition;
targetSpriteRenderer.transform.rotation = originalTargetRotation;
targetSpriteRenderer.transform.localScale = originalTargetScale;
// 恢复透明度
Color color = targetSpriteRenderer.color;
color.a = 1f;
targetSpriteRenderer.color = color;
}
// 重置所有状态变量
isCutting = false;
isInTractionMode = false;
isCutComplete = false;
isFadingOut = false;
isCutTextFlickering = false;
currentState = State.Follow;
// 清理列表
if (timedCutPoints != null)
{
timedCutPoints.Clear();
}
if (cutEdgeIndices != null)
{
cutEdgeIndices.Clear();
}
if (edgePoints != null)
{
edgePoints.Clear();
}
if (originalEdgePoints != null)
{
originalEdgePoints.Clear();
}
}
// 停止音效的辅助方法