문제
DefaultProjectile.MoveTo의 유도(homing) 분기는 DOTween.To(() => 0f, v => { ... transform.position = ... }, 1f, duration).SetEase(Ease.Linear)(41-49행)를 SetTarget도 SetLink도 없이 만든다. 같은 메서드의 "position" 분기(21행)는 Transform이 파괴되면 자동으로 kill 되는 transform.DOMove를 쓰고, 모듈의 다른 트윈들도 모두 SetLink를 호출한다(DOTweenAction.cs:93, 100 등). 이 setter는 MonoBehaviour의 transform을 역참조하므로 ProjectileSpawner의 Destroy(projectileObject, dto.duration)(ProjectileSpawner.cs:22)가 적용된 뒤에는 파괴된 오브젝트를 건드린다. Unity의 지연 파괴 시계와 DOTween의 누적 시간은 서로 독립적이며, 비행 중 씬 전환이 일어나면 오브젝트는 즉시 파괴된다.
위치
client/Assets/Scripts/GameScene/Object/Projectile/DefaultProjectile.cs:41
재현 / 영향
유도 투사체(end.targetType == "reference")가 비행 중일 때 GameEndEventController가 ResultScene을 로드하거나, 단순히 지연 Destroy가 트윈의 마지막 틱보다 한 프레임 먼저 적용되면, GameObject는 사라졌는데 고아 트윈이 DOTween의 DontDestroyOnLoad 인스턴스에서 계속 돌며 파괴된 Transform을 역참조한다. DOTweenSettings.asset에 useSafeMode: 1이 켜져 있어 현재는 트윈당 MissingReference 경고 로그가 남고 트윈이 kill 되는 선에서 끝나지만, safe mode를 끄면 틱마다 처리되지 않은 MissingReferenceException이 발생한다. 실제로 누수되는 리소스는 없고 결함은 누락된 SetLink다.
수정 방향
DOTween.To 호출에 .SetLink(gameObject)(최소한 .SetTarget(transform))를 체이닝해 position 분기 및 코드베이스의 나머지 관행과 맞춘다.
심각도: low · 분류: correctness
자동 코드 리뷰(멀티 에이전트 검증 통과)에서 발견됨.
문제
DefaultProjectile.MoveTo의 유도(homing) 분기는DOTween.To(() => 0f, v => { ... transform.position = ... }, 1f, duration).SetEase(Ease.Linear)(41-49행)를SetTarget도SetLink도 없이 만든다. 같은 메서드의 "position" 분기(21행)는 Transform이 파괴되면 자동으로 kill 되는transform.DOMove를 쓰고, 모듈의 다른 트윈들도 모두SetLink를 호출한다(DOTweenAction.cs:93, 100 등). 이 setter는 MonoBehaviour의transform을 역참조하므로ProjectileSpawner의Destroy(projectileObject, dto.duration)(ProjectileSpawner.cs:22)가 적용된 뒤에는 파괴된 오브젝트를 건드린다. Unity의 지연 파괴 시계와 DOTween의 누적 시간은 서로 독립적이며, 비행 중 씬 전환이 일어나면 오브젝트는 즉시 파괴된다.위치
client/Assets/Scripts/GameScene/Object/Projectile/DefaultProjectile.cs:41재현 / 영향
유도 투사체(
end.targetType == "reference")가 비행 중일 때GameEndEventController가 ResultScene을 로드하거나, 단순히 지연Destroy가 트윈의 마지막 틱보다 한 프레임 먼저 적용되면, GameObject는 사라졌는데 고아 트윈이 DOTween의DontDestroyOnLoad인스턴스에서 계속 돌며 파괴된 Transform을 역참조한다.DOTweenSettings.asset에useSafeMode: 1이 켜져 있어 현재는 트윈당MissingReference경고 로그가 남고 트윈이 kill 되는 선에서 끝나지만, safe mode를 끄면 틱마다 처리되지 않은MissingReferenceException이 발생한다. 실제로 누수되는 리소스는 없고 결함은 누락된SetLink다.수정 방향
DOTween.To호출에.SetLink(gameObject)(최소한.SetTarget(transform))를 체이닝해 position 분기 및 코드베이스의 나머지 관행과 맞춘다.심각도: low · 분류: correctness
자동 코드 리뷰(멀티 에이전트 검증 통과)에서 발견됨.