UEFN - 사라지는 바닥
Verse 코드로 선택한 바닥 매쉬를 등록해
순차적으로 사라지게 하는 디바이스를 만들어보자.
우선 등록할 바닥 매쉬를 생성해주어야 하는데, 위 예제에서는 색상 변경 바닥 디바이스?
미리 구현되어 있는 바닥을 이용해서 사라지는 플랫폼을 구현하는데,
좀 더 커스텀할 수 있게 BP나 디바이스를 만드는 게 더 좋아 보여서 BP로 만들려고 한다.
언리얼 엔진보다 한정적인 모습을 볼 수 있다. 건물 사물, 건물 스테틱 메시가 있는데,
건물 사물을 "독립적인" 사물로 정적 매쉬라는 용어 자체가 고정되어 조작 불가란 의미가 있기 때문에
건물 사물이 좀 더 바닥으로 쓰기 맞아 보인다. 이걸로 생성해 준다.
아무 메쉬나 스태틱 메시 컴포넌트에 등록한다.
전 글에서 Verse 스크립트 생성을 써서 스킵하겠다.
Verse로 디바이스를 선택해 아래와 같이 작성한다.
using { /Fortnite.com/Devices }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
log_platform_series := class(log_channel){}
Test_Verse01 := class<concrete>(creative_device):
Logger : log = log{Channel := log_platform_series}
@editable
HeadStart : float = 2.45
@editable
AppearDelay : float = 0.98
@editable
DisappearDelay : float = 1.11
@editable
Platforms : []creative_prop = array{}
OnBegin<override>()<suspends> : void =
loop:
sync:
ShowAllPlatforms() # 이 동시 실행 루틴은 즉시 시작되며 block 표현식과 동시에 실행됩니다.
block: # block 표현식은 ShowAllPlatforms()와 동시에 바로 시작됩니다. 이 코드 블록 내의 모든 표현식은 순차적으로 실행됩니다.
Sleep(HeadStart) # HeadStart초 동안 기다린 후에 HideAllPlatforms()이 실행됩니다.
HideAllPlatforms() # HeadStart초 후에 이 동시 실행 루틴이 실행됩니다.
ShowAllPlatforms()<suspends> : void =
for (PlatformNumber -> Platform : Platforms):
Logger.Print("Platform{PlatformNumber} is now shown.")
Platform.Show()
Sleep(AppearDelay)
HideAllPlatforms()<suspends> : void =
for (PlatformNumber -> Platform : Platforms):
Logger.Print("Platform{PlatformNumber} is now hidden.")
Platform.Hide()
Sleep(DisappearDelay)
Sync는 Verse 언어에서 사용되는 키워드 중 하나로, 동시 실행 루틴을 시작하는 데 사용된다.
유니티 코루틴 생각하면 될 듯.
Block 키워드는 아래로 무조건 순차적으로 진행되는 코드를 그룹화하여, 순서 보장을 한다.
그래서, 모든 블랙폼을 보여주면서 동시에 숨김을 하는
작업 사이에 Sleep을 주어 순차적으로 사라지는 바닥이 구현된다.
위에서 만든 바닥들이 Creative_prob에 해당된다. @editable으로 디테일 창에 노출시켰으니, 등록해 주자
+ 여담이지만 UPROPERTY(EditAnywhere)와 같은 매크로와 블루프린트에 노드를 사용 못한다는 게 아쉽다.
순차적으로 사라졌다 생기는 플랫폼들을 확인할 수 있다.