提交
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
// 停止音效的辅助方法
|
||||
|
||||
Reference in New Issue
Block a user