Post

[ ERROR/오류덩어리들 ] 2022. 10. 15. 14:14

현상 : 

 프로젝트를 실행시키고나서 오브젝트들이 회전을 해야하는데 하지않았습니다.

 

살펴보니 씬에서는 오브젝트의 콜라이더만 정상적으로 작동하고, 오브젝트는 작동하지않았습니다.

인스펙터창에 Rotation도 콜라이더와 똑같이 정상적으로 작동하였으나, 오브젝트만! 움직이지않았죠.

 

 

 

원인 :

원인은 Mesh때문이었습니다.

정확하게 말하면 Combined Mesh (root:scene) 2(Mesh Filter) 때문이었죠.

 

 

 

해결:

인스펙터창에 static 중, Batchong Static을 풀어주면됩니다.

회전이 잘됩니다.

 

 

 

원인분석:

Batchong Static 은 움직이지않는 동일한 재질을 공유하고있는 오브젝트들을 일괄처리함으로써

드로우콜을 줄여 최적화를 자동으로 도와줍니다.

 

씬을 시작할때 작동하며, 런타임중에는 따로 연산을 하지않는다고합니다.

 

저는 스크립트로 필요할때만 회전하게 할려다보니 이런 상황을 맞닥뜨린것같습니다.

다른 mesh를 쓰지만 같은 material을 공유하고있는것도 어느정도 작용했겠죠..

 

하지만, 같은 mesh를 쓰는건 아니기에 batch에서 딱히 차이는 없었고

아마 개수가 엄청나게많은게 아닌이상에는 동적인 연출을 위해서 끄고 작업할 것같습니다.

 

 

 

Post

[ ERROR/오류덩어리들 ] 2022. 9. 22. 11:18

결론부터 말씀드리자면 카메라의 'Depth'때문입니다.

 

제 경우에는, 카메라가 3개 있는상태인데 위에 메인카메라와 UI카메라만 보이고 

체력바를 나타내는 카메라는 보이지않는 상태였습니다.

분명 캔버스 안에도 잘 들어왔고, 카메라 화면에도 비춰지는데 말이죠..

 

심지어 처음에는 씬에서 안보이는데, 카메라 인스펙터창에서

어떤 값이든간에 수정하기만 하면 무조건 화면에 비쳐집니다..!

 

여러가지로 검색해보다가 마지막 검색 'unity3d' 카메라 여러개라는 검색어를 통해서 알게된 사실..

카메라 3개 중 2개의 depth가 같아서 발생한 현상이었습니다.

 

depth가 0, 1 ,1 이었기에 발생한일..

depth를 0, 1, 2로 바꿔주어 해결했습니다..

 

어이없습니다.. (´。_。`)

Post

[ ERROR/오류덩어리들 ] 2022. 8. 29. 20:11

언리얼 강의를 듣는도중 시간이 지남에따라 캐릭터가 가진 변수의 값이 점점 줄어드는 코드를 작성하였습니다..

 

하지만.. 뭔가 Tick을 쓸 경우 왠지모르게 컴파일에러라던가 뜨는건 아니지만.. 실행이 안되고.,,,

 

 

PrimaryActorTick.bStartWithTickEnabled = true; //플레이하자마자 Tick처리
PrimaryActorTick.bCanEverTick = true; // Tick처리를 가능하게함

찾아보니 해당 함수변수들은 기본이 False로 처리되어있기때문에 true로 처리해주어야했습니다..

게임 룰을 위해 작성한 변수가 시간에 따라 변화하는것이니 저는 (프로젝트이름)GameMode.cpp 생성자에다가 작성을 해주었고, 필요한 부분의 생성자에다가 작성하시면 될것같습니다. 

 

 

우측하단에 계속 변화하는 숫자가 보이시나요?ㅎㅎㅎ 저는 해당 숫자가 0이하로 가면 파란색으로 바뀌게하였습니다.

저의 경우, 변수의 값이 변하는것은 bCanEverTick=true로 하면 되었지만 색상변화의 경우에는

bStartWithEnabled=true까지해주어야지 처음시작하자마자 색상이 제대로 바뀌어 나왔습니다.

 

 

 

 

 

그나저나..사실 색상이 서서히 변해야하는데 확 바뀌는게...이것도 오류덩어리로 다뤄야할지도 모르겠네여...ㅎ..ㅠ.....화이팅..

Post

[ ERROR/오류덩어리들 ] 2022. 8. 28. 15:36

Battery Collector 라는 언리얼강의를 보면서 코드를 따라 치고있던 중 instigator 을 치고나니 오류가 떳습니다.

 

멤버 "AActor::Instigator" (선언됨 줄 737 / "C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\Engine\Classes\GameFramework/Actor.h")에 엑세스할 수 없습니다. 

 

찾아보니 언리얼 버전이 업그레이드되면서 발생한 문제인것같습니다.

 

SpawnParams.Instigator = GetInstigator();

Instrigator대신, GetInstigator() 쓰면됩니다 :D

 

 

 

 

 

 

너무 간단해서 뻘쭘한데.. 이렇게 글 적어두되남..?

▲ top