에러 1 현재 소환된 액터를 처리하는과정에서 중단스택 

// 이유 : 내가 소환된 액터를 활성화시켜 Destroy를 시켰는데, 그와중에 정리하려니깐 언리얼엔진님이 골치가 아프심



에러 2  volume[0] 접근 

//Volume을 위에서 선언하고, 해당 Volume의  num도 체크를 안한상황에서 Volume[0] 에 접근 하려한다

이유가 왜일까?  다른 레벨에서 스타트를 했기 때문에 (그맵에는 SpawnVolume이 없다)

따라서 SIze는 0인데 배열을 탐색하려고하니 배열의 Index문제가 발생하였다.

그래서 여기 함수에서 중단점이 걸리게 되었고,

FORCEINLINE void RangeCheck(SizeType Index) const
{
	CheckInvariants();

	// Template property, branch will be optimized out
	if constexpr (AllocatorType::RequireRangeCheck)
	{
		checkf((Index >= 0) & (Index < ArrayNum),TEXT("Array index out of bounds: %lld into an array of size %lld"),(long long)Index, (long long)ArrayNum); // & for one branch
	}
}

 

CHECK로 인덱스가 올바르지 않으면 경계를 벗어났다고 에러를 발생시키고 중단점이 걸리게 된다.

여기에서의 Checkf 는 어썰트코드같다. 이런걸보니깐 어썰트가 좋은것 같은데 

후우..진도 후딱 따라잡고 어썰트코드 사용하고싶다 

 

에러 3  레벨이 달라지면 Character->speed가 디폴트로 돌라가게되네 Instance에 저장해야겠다

 

 => 에러 2도 그렇고 에러 3도 그렇고 

레벨이 달라지면 게임 스테이트가 초기화되는건 배웠는데

정확히 무엇이 달라지는지를 좀 알아야겠다

 

이유 : : 레벨이 달라지게되면 초기화가 들어가는것같다 모든 액터들이 

pawn도 초기값의 Speed로 돌아갔다 

 

=> 레벨 변경 시 현재 레벨에 배치된 모든 액터(캐릭터, 폰, 게임 상태 등)는 기본적으로 초기화(파괴)되고 새로 생성됩니다.

알아보기

 

 

흠 만약에 캐릭터에 버프아이템을 적용한다고 치면 ->

내 생각은 Item -> Gameinstance ->GameState에서 BeginPlay때마다 불러와서 캐릭터에 적용인데 과연 이게 좋은설계일까?

 

어떻게보면 Pawn도 초기화가 되는데 흠..

 

 

+ Recent posts