//자리수를 6자리 넘어가는것은 6자리 까지 맞춰준다는 뜻
cout.precision(6);

cout << 12344325534; //12344325534 출력 - 소수점이 들어가지 않으면 효과가 없다.

cout << 12344325534.0f //1.23443e+9 출력 - 소수점이 들어가는 순간 지수로 표현하여 자리수를 맞춤
cout << 1234.0f //1234.0 출력 - 자리수 미만이라면 그대로 출력

//지정했던 precision을 소숫점에서 사용한다는 뜻 (바로 이전에 사용했던 precision으로 설정됨
cout << fixed;

cout << 3334.221f; //3334.220947 출력 - 소숫점이 6자리로 고정 됨

 

'C++ > 유용한 것들' 카테고리의 다른 글

숫자 구분자  (0) 2022.07.27
서식문자  (0) 2022.06.06
문자열 다루기  (0) 2022.06.05

Radial Blur를 만들어서 파라미터로 블러 값을 조절하려고했다.

 

그래서 내가 위에서 설정한 블러 값을[ ex) 0.432 ] 처음에 불러와서 블러값의 최대치로 사용하려고 Get을 찾았다.

뭐 SetScalarParameterValue함수도 있으니 당연히 바로 받는 Get도 있을거라 생각했는데 없었다.. =~=

 

 

클래스들을 찾아보니 파라미터값을 받는 함수들은 모두 MaterialParameterCollection이란거를 사용했다.

보통 머터리얼을 에디터에서 조작하기때문에 같이 쉽게 조정하려고 에디터상에서 만들어준다

 

 

그래서 이렇게 디폴트 값을 정의 해준다

 

 

MaxBlur 노드가 MaterialParameterCollection노드이다.

그래서 맥스값과 같이 0 ~ 1까지의 값을 곱하여 사용하기로 했다.

 

 

#include "Materials/MaterialParameterCollection.h" 를 include해주고

생성자에서 이런 식으로 값을 가져왔다 =~=

 

 

문제 : 

어떤 공격에 의해 맞는 처리를 하는 컴포넌트가 있어서

맞을때만 Tick을 켜주려고 생성자에 bCanEverTick를 False로 해놓고 뒤에서 조정하려했는데

이상하게 bCanEverTick이 먹혀들지가 않고, 함수인 SetComponentTickEnabled또한 먹히지 않았다.


문제 해결

https://forums.unrealengine.com/t/component-bcanevertick-has-no-effect/387533

비슷한 문제이다.

 

일단 생성자에서 bCanEverTick을 False로 두면 조정 자체가 안되어 무조건 true로 둘수밖에 없었다.

 

ActorComponent.h에서 Tick조정 함수들을 보다보니까 SetComponentTickEnabledAsync라는 함수가 있어서

BeginPlay에서 사용해 보았는데 다행히 잘 조정되었다.

 


느낀점

문제가 생기면 그 상속받은 클래스에서 관련 데이터가 있는지 항상 봐둬야겠다.

문제 : 

 


문제 해결

멤버 이니셜라이저는 선언된 순서대로 초기화 되기 때문에 기본 클래스 선언 순서와 맞춰주어야한다.

 


느낀점

오.....

'C++ > 오류' 카테고리의 다른 글

구문 오류: ';'이(가) '<class-head>'앞에 없습니다.  (0) 2020.09.05

문제 : 

이러한 배열에서

 

이렇게 찾으려고 했더니만

 

이런 오류가 났다.


문제 해결

해결이라기보다는 추측인데

int와 int는 값을 비교할 수 있다.

하지만 FHitResult는 어떻게 비교해야 같은지 알까?

 

깊게 생각해보니 정의 되지 않았을 확률도 높다고 생각한다..

 

애시당초

if( FHitResult == FHitResult) 도 안되는거 보면 당연했던거다.. ㅠ


느낀점

잘 생각해보면 다른 방법으로 찾았겠지만

계속 안되는걸 붙잡고 있는거 같았어서 포스팅한다.

 

담엔 좀 더 깊게 생각해보자

문제 : 

테스트하려고 패키징한 게임에서 1분내 랜덤한 타이밍으로 갑자기 안움직이길래

아 ㅅㅂ 뭐지? 했다.

 

여러가지 디버깅을 해보니 플레이어의 상태를 관리하던 객체 데이터가 날라가는것 =~=

나는 그 상태에 따라 움직이기 때문에 값이 날라가버려 움직여지지 않았던 것이다ㅋㅋ

 

상태를 관리하는 Enum값이 0아니면 1, 2, 3이 되어야 할 애들이 갑자기 253이렇게 바뀌고 난리였다~


문제 해결

내가 관리하는 상태 클래스를 Player클래스에서 포인터 타입으로 가지고 있었다.

하지만 UPROPERTY가 붙지 않은...

 

UPROPERTY가 붙지않은 포인터는 GC에서 걸려지기 때문에

내 상태 데이터가 GC에서 자동으로 걸러지는거였더라리~

 

바로 UPROPERTY붙이고 실행하니 다행이 해결 되었다.


느낀점

엔진에서 다룰 필요가 없기 때문에 UPROPERTY를 붙이지 않았는데

이제 이러한 문제 까지 고려해야겠다

 

잘 배웠다

문제 : 

특징

  1. 몇번 에디터에서 잘 실행 되다가 갑자기 터진다.
  2. C++에서는 잘 빌드가 된다.
  3. 터진 후로는 실행버튼을 눌르면 터지거나 저 함수가 들어간 블루프린트를 열면 터진다

 


문제 해결

 

임시방책으로 변수명을 바꾸면 다시 잘 돌아가나 정말 임시방책이며 다시 터짐이 찾아온다.

 

해결방법은 null check를 해주면 된다.

저 3은 임시방책을 사용하여 다시 터진 횟수를 보여준다

 


느낀점

너무 기본적인건데 안하고 있었다는게 좀 바보 같았고

기본적으로 체크하고 처리해야하는 것들을 다시 정리해야겠다.

문제 : 


문제 해결

번역하면 "이 클래스의 애니메이션 그래프에서 중복 항목을 제거하세요."

말 그대로 해결하면 된다.

 

나는 하나의 몽타주 재생 슬롯을 Falling, LandMovement 스테이트에 중복으로 넣어 두었다.

 

쉽게 해결 하는 방법은 캐시포즈를 이용하면 된다.

사용하고자 하는 State에 저 캐시포즈를 사용하면 해결할 수 있다.


느낀점

간단하지만 한번 짚고 넘어가자 느낌으로 포스팅

+ Recent posts