UI 엘리먼트를 제작할 때는 콘텐츠를 최적화해 퍼포먼스를 향상하고 비효율성을 최소화할 방법을 생각하는 것이 좋습니다. 예를 들어, 프로젝트의 규모에 따라서는 UI에 정보를 전달하는 데 프로퍼티 바인딩면 충분할 수도 있습니다. 그러나 UI 구성이 더 복잡하거나 프로젝트를 최적화해야 한다면 UI를 업데이트할 때 필요한 정보만 제공하는 것이 좋습니다.
이 레퍼런스 가이드에서는 HUD에 정보를 전달하는 세 가지 방법을 살펴봅니다. 세 가지 접근법 모두 작업을 성공적으로 수행하지만, 세 번째 예시가 업데이트 프로세스를 틱 이벤트에서 분리하고 이벤트 디스패처를 사용해 수동으로 정보를 업데이트하는 가장 비용 효율적인 방법을 제시합니다.
예시 1. 함수 바인딩
이 예시에서는 함수 바인딩 을 사용해 플레이어의 체력/에너지를 업데이트하는 방법을 살펴봅니다.
기본적인 체력/에너지 설정이 갖춰져 있습니다.
디스플레이를 배치한 후 GetHealth 와 GetEnergy 라는 프로그레스 바의 바인딩을 생성 합니다. 함수 바인딩은 플레이어 캐릭터 블루프린트로 형변환되고 체력과 에너지로 정의한 변수를 할당합니다.
아래는 GetHealth의 바인딩입니다. 디버깅을 위해 체력 변수의 값을 화면에 출력하는 Print String 노드도 추가합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
아래 이미지에서 플레이어 캐릭터의 체력과 에너지 값이 HUD에 전달되고 반영되는 것을 볼 수 있습니다. 그러나 파란색 디버그 텍스트가 체력 값을 업데이트하지 않을 때도 프레임마다 체력 값을 확인하고 있다는 것을 나타내고 있습니다.
기본적으로 이 접근법은 '플레이어 캐릭터 블루프린트가 무엇인지'를 묻는 것입니다. 그리고 이를 알아낸 후 프레임마다 '체력 및 에너지 값을 요청'합니다. 작고 단순한 시스템에서는 이 접근법이 효과적이지만, 프레임마다 여러 프로퍼티의 업데이트를 확인하는 복잡한 시스템을 사용한다면 이 설정으로 인해 퍼포먼스가 저하될 수 있습니다.
예시 2. 프로퍼티 바인딩
두 번째 접근법인 프로퍼티 바인딩 은 함수 바인딩보다 조금 더 비용 효율적입니다.
동일한 체력/에너지 설정을 사용해 프로퍼티 바인딩의 작동 방식을 살펴봅시다.
위젯 블루프린트의 이벤트 그래프(Event Graph) 에서 Event Construct 를 사용해 플레이어 캐릭터 블루프린트의 레퍼런스를 가져올 수 있습니다.
Event Construct를 사용하면 캐릭터 블루프린트를 한 번 형변환하고 해당 정보를 레퍼런스로 저장하므로 스크립트가 정보를 프레임마다 호출하지 않아도 됩니다.
그런 다음 프로그레스 바의 값을 캐릭터 블루프린트 내 변수에 직접 바인딩할 수 있습니다.
이 접근법에서는 프레임마다 형변환을 수행하지 않으며 '플레이어 캐릭터 블루프린트가 무엇인지' 확인하지 않습니다. 대신 프레임마다 체력과 에너지 값을 쿼리합니다.
이 접근법은 프로젝트의 규모에 따라 효율적일 수 있지만, 더 복잡한 시스템에서는 이벤트 기반 접근법이 나을 수 있습니다.
예시 3. 이벤트 기반
여기서는 이벤트를 사용해 변경될 때만 HUD를 업데이트하는 방법을 살펴보며, 동일한 체력/에너지 설정을 계속 사용합니다.
캐릭터 블루프린트 내의 스크립트 마지막에 체력을 감소시키는 이벤트 디스패처 노드를 추가합니다. 이 예시에서 이벤트 디스패처 노드는 Call Update Health 입니다.
테스트를 위해 F 키를 누를 때마다 체력이 감소하도록 설정되어 있습니다.
이제 체력이 감소할 때마다 이 이벤트 디스패처를 호출합니다. HUD 위젯 블루프린트의 이벤트 그래프에서 Event Construct를 다시 사용해 플레이어 캐릭터 블루프린트의 레퍼런스를 얻고 저장할 수 있습니다. 또한 해당 캐릭터 블루프린트 안의 이벤트 디스패처에 커스텀 이벤트를 바인딩해 이벤트 디스패처가 호출될 때마다 커스텀 이벤트가 호출되도록 만들 수 있습니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
이제 HUD 위젯 블루프린트 안의 커스텀 이벤트는 플레이어 체력의 변경 여부와 관계없이 항상 값을 확인하지 않고, 플레이어 체력이 변경될 때만 확인하여 디스플레이를 업데이트합니다.
아래 이미지는 체력과 에너지를 하나의 Event Construct 스크립트에 통합하는 방법을 보여줍니다.
UpdateHealth 와 UpdateEnergy 커스텀 이벤트는 캐릭터 블루프린트의 이벤트 디스패처에 바인딩되며, 캐릭터의 체력/에너지 값이 변경될 때만 호출됩니다. 또한 바인딩 프로세스 이후 HUD가 생성될 때 두 커스텀 이벤트를 호출해 디스플레이를 초기화할 수 있습니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.