본문 바로가기

블루프린팅/2. 블루프린트 프로그래밍

[2.블루프린트연습] Print "Hello"

레벨에디터의 오른쪽 Outliner에서 BP_Cube를 선택하고 오른쪽 Edit BP_Cube를 클릭해 블루프린트 에디터를 연다

블루프린트 에디터의 이벤트그래프창에 3개의 이벤트가 비활성화 되어 있다. 

BeginPlay : 플레이버튼을 클릭하면 발생하는 이벤트

ActorBeginOverlap : 다른 Actor와 겹치면 발생하는 이벤트

EventTick : 시계 이벤트(일정시간마다 반복적으로 발생함)

이벤트그래프 빈곳에 우클릭하면 컨텍스트메뉴창이 뜬다. 여러가지 기능을 담당하는 노드를 찾아서 추가할 수 있다.

print를 입력하고 Print String를 선택한다.

그럼 Print Text노드가 삽입되고 확장화살표를 눌러 펼치후 Duration을 10초 변경후 BeginPlay의 출력핀과 연결한다.

 

연결하지 않으면 아무것도 동작하지 않는다. 블루프린트에디터를 살짝 내려 레벨에디터가 보이게 한다. 이상태에서 블루프린트에디터의 플레이버튼을 눌러보면 좌측위에 Hello라고 프린트 되고 이벤트그래프에서 EventBeginPlay->PrintString의 동작상태가 보인다. 10초후 텍스트는 지워질것이다. 물론 블루프린트에디터를 닫고 레벨에디터에서 플레이해도 된다.

이제 우리는 Hello! 프로그램을 짜봤다. 우리가 짠 Hello!가 프린트 되는 블루프린트는 Actor의 자식인 BP_Cube라는 클래스내에 있기 때문에 BP_Cube로 만든 인스턴스는 같은 기능을 실행하게 된다. 이게 객체지향 프로그래밍의 기본이다.

 

ALT-좌클릭으로 두 노드사이의 연결을 끊는다.

우클릭후 Flow Control의 For Loop를 선택해주고 두 노드 사이에 놓고 다음과 같이 연결한다. Loop노드 Last Index를 10으로 한다. 

Hello를 10번 출력해준다.

index를 Print Text노드의 In에 연결해주면 자동으로 형변화 노드가 추가된다. For Loop의 Index는 인티저인데  Print String노드의 입력은 String이기 때문이다.

실행해보면 화면 좌축위에 1~10이 잘 출력된다.

이제 인덱스의 합을 구하기 위한 sum변수를 만들어보자

왼쪽 아래 My Blueprint 패널에서 변수+를 눌러 이름을 sum으로 하고 타입을 인티저로 한다. 컴파일하면 디테일판넬에서 디폴트값이 0인걸 확인할 수 있다

이 변수 이름을 끌어다 이벤트그래프에 끌어다 놓으면 Get/Set질문을 하는데 하나씩 클릭해서 2개의 노드를 만든다

인덱스의 값을 Sum에 더해주어야 하므로 +연산자도 필요하다 우클릭후 +입력후 추가한다.

아래와 같이 연결한다. sum변수를 일어 index를 더해주고 다시 sum에 넣어준다.sum=sum+index; 이다. SET은 실행핀이 있기 때문에 위에서 Loop와 Print Text사이의 핀을 끓어주고 연결한다. 끓지않아도  연결하다보면 자동으로 끓긴다.

이제 마지막으로 인덱스와 Sum을 한줄에 써주기 위해 합쳐서 출력하겠다 스트링을 합치는 노드는 Apend가 있다

우클릭후 Append를 추가하면  입력이 2개인데  Add pin을 눌러 3개로 만들어주고 B에는,+빈칸   를 입력한다.

다음과 같이 연결한다. For Loop의 index는 두군데 노드에서 사용되었다. index와 sum은 Append에서 ,와 합쳐져 Print String에서 한꺼번에 처리된다.

이번에는 index를 2로 나눈 결과가 1일 경우(홀수)만 출력해주고 더해주는 로직을 추가하겠다. index는 3번이나 사용되었다 홀수일 경우 ==노드에서 true가 출력될때만  Branch 노드에서 다음으로 실행되어 Sum이 저장되고 출력된다.