1. Custom Event
-Custom Event는 메인 이벤트그래프에서 생성되고, Input을 지정할 수 있다.
-Custom Event에는 Delay 노드를 줄 수 있다.
-얘는 이 custom event에만 적용되는 자신만의 Variable을 만들 수 없다.
-예를 들어 간단한 것, enemy를 spawn한다던가 이럴 때는 Custom Event를 쓰면 좋다
-Custom Event는 Function이나 Macro에서도 불러서 쓸 수 있다.
2. Function
-Function은 이벤트그래프에서 생성되는 것이 아니라 자신만의 Workspace가 생성된다.
-Custom Event와의 차이점은 Function도 Input을 지정해줄 수 있지만 얘는 Output도 지정해줄 수 있다.
-그러나 Function에는 Delay를 줄 수 없다. 왜냐면 함수는 one-time task이기 때문이다. 그냥 기능적으로 실행되고, 반환하고, 이거임.
-Function은 자신만의 local한 Variable을 생성할 수 있다. 큰 시스템을 만들 때 유용하다. 이 Local Variable은 이 function이 실행되고 있을 때만 이용되고, 다 실행되면 제거된다. 그리고 다시 function이 호출되면, local variables가 reset된다.
-이벤트그래프에서 분리해서 자신만의 Workspace에서 자신만의 variable을 만들어 handy하게 쓰고 싶으면 Custom Event가 아닌 Function을 추천한다. 예를 들어 whole inventory system을 만들 때 함수를 생성하면 좋다.
-Function Library를 생성할 수 있다. 이건 프로젝트의 어느 클래스에서든 이용될 수 있다.
-Function은 이벤트그래프나 Macro에서 이용될 수 있다
(Custom Event vs Function 참고)
3. Macro
-Macro는 Execution 타입의 variable을 만들 수 있다. Custom Event와 Function에는 variable type만 있고 실행 타입은 없다.
-그래서 만약 true/false 값을 이용하고 싶을 때 Function이라면 자신이 생성한 Function의 Boolean Output 값을 Branch에 연결해서 실행해야 하지만,
Macro라면 그냥 Output을 Execute 타입의 True, False라는 이름의 Output 변수를 만들어주면 된다. Branch를 쓸 필요가 없다.
-Macro는 Delay 노드를 쓸 수 있다!
-그러나 단점은 Local Variable을 생성할 수 없다. 그냥 이벤트그래프와 같이 사용하는 변수가 생성됨. 그래서 continuously referenced inside memory essentially if this class is existence
-블루프린트 노드에서 'Is Valid(?)'와 'Sequence', 'Branch', 'For Each Loop', 'Flip Flop' 등의 노드도 사실 매크로다! 더블클릭해서 열어보면 알 수 있음
-Macro Library를 생성할 수 있다. 함수 라이브러리가 어느 클래스에서든지 이용할 수 있는 것과는 다르게, 매크로 라이브러리는 per class이다. 매크로 라이브러리를 생성하면 블루프린트 생성할 때처럼 actor 클래스인지, pawn 클래스인지 등을 지정해줘야 하는 것을 보고 알 수 있다.
-또 매크로는 이벤트그래프나 함수에서 이용될 수 있다.
(Macro 참고)
4. Construction Script
-Construction Script는 Play 버튼을 누르지 않아도 에디터의 뷰포트에서 볼 수 있는 것이 특징이다.
-Custom Event로 어떤 기능을 만들고 에디터의 디테일 창에서 어떤 값을 바꿔도, Play하기 전에는 실시간으로 볼 수 없다. 그러나 Construction Script는 에디터의 디테일 창에서 값을 바꾸면 Play하지 않아도 실시간으로 바뀌는 것을 볼 수 있다. I can see it visually as I'm working on a project using construction script
-Event Graph는 게임이 Play되고 있는 도중에 runtime으로 실행하고 싶을 때 실행되는 것이고, 컨스트럭션 스크립트는 언제든지 실행되고 있고, 어느 프로퍼티가 바뀌면 에디터에서 바로 실행된다.
(Event Graph vs Construction Script 참고)