SMALL
유니티에서 The requested operation caused a stack overflow 오류가 발생했다.
타이틀에서 메인 게임 씬으로 넘어갈 때 발생했는데,
타이틀 씬에 들어가는건 게임매니저 외엔 수정한게 없는데 똑같은게 들어간 메인 씬은 또 잘 된다..;
그래도 알 수 없으니 콘솔에 뜬 호출스택을 하나하나 찾아가며 본 결과
setter에서 다른 값을 변경해줄 때 발생한 오류였는데
public int playerStamina
{
get
{
return _playerStamina;
}
set
{
_playerStamina = value;
if(_playerStamina <= 0)
{
currentTime++;
}
OnPlayerStaminaChanged?.Invoke(this, EventArgs.Empty);
}
}
public InGameTime currentTime
{
get
{
return _currentTime;
}
set
{
playerStamina = playerSkills.maxStamina;
...
스태미너의 초기값이 0이어서 currentTime을 +1 시켰고,
currentTime에 스태미너를 max값으로 바꿔주게끔 해놓았는데....
maxStamina가 0으로 초기화 되어있었다...ㅡㅡ;;
맥스값이 0이니 초기할당 시 시간대 변경 호출->스태미너 0으로 설정->시간대 변경 호출->스태미너 0으로 설정...
무한 반복이 일어나 호출스택이 터져버린 것.
데이터를 새로 생성할 때 playerSkills 구조체의 초기값을 지정해주는 것으로 해결했다.
BIG
'ETC > Unity' 카테고리의 다른 글
[Unity] Jenkins, Gitea를 활용해 유니티 자동빌드하기 - 1 - (0) | 2024.05.20 |
---|---|
[Unity/게임수학] 2D 쿼터뷰 공간 Sprite Order (Vector2 수선의 발) (0) | 2024.05.07 |
[Unity] 2D 쿼터뷰 공간 바닥에 랜덤 스폰하기 (0) | 2024.04.04 |
[Unity] Script에 의존하지 않고 스토리 씬 구현하기 (0) | 2024.03.04 |
[Unity] for문에서 이벤트리스너 등록 시 문제 (0) | 2024.02.11 |