개발나라 스용공주

[UNREAL] 블루프린트 BluePrint 이론 (20) / Is Valid 본문

개발일지/UNREAL ENGINE

[UNREAL] 블루프린트 BluePrint 이론 (20) / Is Valid

스용공주 2024. 2. 2. 16:41
728x90
728x90

< 예제 1 >

 

아래 사진은 Hp라는 변수를 담고 있는 BP_Player 변수형을 가진 변수 Player와 Player 2가 있다.

여기에서 Player와 값을 10으로 넣어준 Player2가 있고 10의 값을 넣어주지 않은 Player(Hp 0으로 설정)를 프린트하였더니 아래 사진과 같이 Player2의 값인 10이 프린트 되었다.

실행 결과

 

 

변수를 만든 것은 참조값을 담고있음

참조값으로 동작을 하는데 같은 주소값을 가지고 있고 즉, 동일한 객체를 가리키고 있다는 것이다.

그래서 하나를 바꾸면 두개 다 변경됨.

 

 


 

 

< Spawn의 역할 >

 

그리고 아래 사진과 같이 Spawn을 이용해 객체를 만들어 변수로 승격해준다는 것은 해당 객체의 주소값을 물려주는 것이다.

 

 

만약 아래 사진과 같이 Spawn 없이 변수만 만들어주었을 경우 주소값이 없기 때문에 값이 NULL이 되어 오류가 나고 해당 노드가 실행되지 않는다.

 

 

 


 

 

< 예제 2 >

 

예제 1의 부분 중 객체가 변수로 승격된 부분에 값을 10으로 변경시켜주는 부분이 위와 같이 존재한다.

해당 부분을 없애고 이를 대체할 함수를 만들어 적용해도 아래 사진과 같이 똑같이 원본값이 변경되는 것을 확인할 수 있다.

1. 함수 만들기

함수 Plus Hp는 Hp를 100으로 만들어준다.

2. 함수 노드에 배치

함수 Plus Hp를 노드에 배치 / 정상적으로 작동하면 Hp의 값을 100으로 바꿔서 출력해줌

3. 결과 적용

 

100이 출력되었다는 것은 Player 변수의 주소값 안에 있는 값을 변경하였다는 것이다.

 

아래 사진과 같이 Return Value가 레퍼런스로 생성된 오브젝트라고 나와있기 때문에 참조방식으로 주소값이 전달되어 원본에 접근가능하도록 된다.

 

 

 

 

※ 번외

만약 아래 사진과 같이 함수에 변수를 제대로 연결해주지 않았다면 주소값이 전달되지 않아 Hp에 100이라는 값을 추가할 수 없게 되므로 NULL의 값이 반환된다.

 

 

 


 

< 예제 3 >

 

위의 예제들은 모두 NULL이 반환되면 안되는 케이스였지만 만약 주변에 캐릭터가 있는지 없는지에 대해 물어보고 그 값이 만약 캐릭터가 없다 라고 판결되어도 상관없다면 NULL값의 반환이 오류가 아니게 된다.

그럴 경우 Is Valid를 사용하여 판별해준다.

 

만약 연결된 노드의 값이 존재하면 Is Valid에 연결된 노드가 실행되고 그게 아니라 NULL값이 나오게 되었다면 Is Not Valid가 실행되게 된다.

그리고 Is Valid는 2가지 종류가 있는데 하나는 아래 사진1이고 나머지 하나는 사진2인데 사진1의 경우 사진2를 합쳐둔 것이라고 생각하면 된다. 사진1의 경우 값의 존재 여부 판별 후 있다면 실행될 노드와 없다면 실행될 노드를 출력시켜주는데 사진2의 경우 값의 존재 여부만 판별해준다.

사진1
사진2

 

 

728x90
728x90
Comments