데이터 애셋 원본 훼손 방지

이 이벤트 그래프로 플레이를 하면 사용중인 SwordArmingData의 내부에 MontageData 하나가 추가가 된다.
하지만 이건 런타임 때만 추가되는게 아닌 플레이를 중지 하여도 계속 남아있다.
이러한 현상은 MontageData를 복사해오는것이 아닌 참조를 하고있기 때문에 주소에 접촉해 원본 자체가 수정되어버린 것이다.

해결 방법은 참조 방식 → 복사 방식으로 전환 시켜주는 것이다.
BP_MontageDataAsset에서 GetMontageData함수를 생성
작동 원리는 인덱스 값을 입력 받아서 PlayMontageParameters 출력 해주는 식으로 진행
Is Valid Index 노드로 Montage Data의 입력받은 인덱스 값이 None인지 아닌지 구분해주고 false면 함수종료
true면 Get(참조)로 만든 Get노드에서 입력받은 인덱스값에 대한 PlayMontageParameters를 받아서 리턴시켜준다.
블루프린트의 오류

블루프린트에서 오류가 났을경우 로그의 메세지를 확인하고 호출스택의 제일 아래 → 위 방향으로 찾아가는게 좋다.
Assert
Assert 함수는 디버깅 모드에서 개발자가 오류가 생기면 치명적일 것이라는 곳에 심어 놓는 에러 검출용 코드로
assert(조건식);을 걸어놓고 그 조건이 false이면 오류가 나서 쉽게 버그를 찾을수 있다.
예전 c++할때 배웠던건데 들어는 봤는데 내용이 기억안나서 메모메모
블루프린터의 제한적 기능
- 기본 자료형에 대한 참고를 못만든다. (int* 생성 불가)
- 다차원 배열, 구조체 생성 불가(굳이 만드려면 구조체가 구조체를 멤버로 들고있으면됨)
- Map에 Value로서 배열이 못들어간다.
- 불변변수 생성이 불가
- 정적멤버 생성 불가
몽타주 섹션
몽타주라는것은 애니메이션 시퀀스들의 사본을 모아둔 곳이라고 봐도 무방하다.


애니메이션 컴포짓 처럼 시퀀스들을 쭉 연결시켜 BP스크립트에서도 사용 가능하지만
서랍에서 물건을 꺼내듯이 섹션으로 구간을 나누어 특정 구간의 애니메이션 시퀀스를 호출 가능하다.
애니메이션 슬롯트랙 우클릭 - 새 몽타주 섹션으로 이름을 지어주고 우측하단의 몽타주 섹션에서 섹션들 사이의 링크제거

SwordArmingData 엘리먼트의 섹션부분에 내가 사용하고 싶은 섹션의 이름을 추가하고
BP에서 MontageData의 1번 원소에 접근 하면 슬롯트랙의 Sheath섹션 부터 애니메이션이 시작되는걸 확인할 수 있다.
'언리얼 BluePrint 정리' 카테고리의 다른 글
| 05/31 학습 정리(Dual Weapon, Asset Import, Function Library) (0) | 2023.06.01 |
|---|---|
| 05/30 학습 정리(Notify State, Does Implement Interface) (0) | 2023.05.30 |
| 05/26 학습 정리( Layered Blend Per Bone, Save cached pose, Animation Slot, Root Motion ) (0) | 2023.05.30 |
| 05/25 학습 정리( Weapon Change 유지보수, Select ) (0) | 2023.05.25 |
| 05/24 학습 정리( GetStateMontageData 함수, Notify의 정의와 종류, Switch ) (0) | 2023.05.25 |