STUDY/UEFN

UEFN - 사라지는 바닥

최디디 2024. 3. 4. 18:14

Verse 코드로 선택한 바닥 매쉬를 등록해

순차적으로 사라지게 하는 디바이스를 만들어보자.

https://dev.epicgames.com/documentation/ko-kr/uefn/synchronized-disappearing-platforms-using-verse-in-unreal-editor-for-fortnite

 

동기화된 사라지는 플랫폼

Verse를 사용하여 차례대로 나타나면서 사라지는 징검다리 플랫폼을 하나의 장치로 구현합니다.

dev.epicgames.com

 

우선 등록할 바닥 매쉬를 생성해주어야 하는데, 위 예제에서는 색상 변경 바닥 디바이스? 

미리 구현되어 있는 바닥을 이용해서 사라지는 플랫폼을 구현하는데,

 

좀 더 커스텀할 수 있게 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)와 같은 매크로와 블루프린트에 노드를 사용 못한다는 게 아쉽다.

 

 

순차적으로 사라졌다 생기는 플랫폼들을 확인할 수 있다.