Builder

개념

  • BuilderBase는 ScreenSystem의 기능 중 하나로, DI Container와 연동하여 화면을 생성하고 Page와 Modal을 생성합니다.

  • 다음 화면에서 사용할 요소는 Parameter로 정의하여 전달할 수 있습니다.

  • 예를 들어 인벤토리에서 아이템을 눌러 상세 아이템 페이지로 넘어가는 UI라고 한다면,

    • 선택한 아이템의 ID를 다음 화면으로 파라미터를 통해 전달할 수 있습니다.

Sign In Modal 에서의 예시 코드

public class SignInModalBuilder : ModalBuilderBase<SignInModalLifecycle, SignInModalView>
{
    public SignInModalBuilder(bool playAnimation) : base(playAnimation)
    {
    }
}

만약 파라미터를 화면 호출시에 전달하고 싶다면

  • ModalBuilderBase, PageBuilderBase 는 파라미터가 있는 버전과 없는 버전 두 가지가 있습니다.

namespace ScreenSystem.Modal
{
    public abstract class ModalBuilderBase<TModal, TModalView, TParameter> : ModalBuilderBase<TModal, TModalView>
        where TModal : IModal
        where TModalView : ModalViewBase
    {
        public ModalBuilderBase(TParameter parameter, bool playAnimation = true, string overridePrefabName = null);

        protected override void SetUpParameter(LifetimeScope lifetimeScope);

        public async UniTask<IModal> Build(ModalContainer modalContainer, LifetimeScope parent, CancellationToken cancellationToken);
    }

    public abstract class ModalBuilderBase<TModal, TModalView> : IModalBuilder
        where TModal : IModal
        where TModalView : ModalViewBase
    {
        public ModalBuilderBase(bool playAnimation = true, string overridePrefabName = null);
    }
}

만약, 파라미터를 전달받는 BuilderBase를 사용한 경우, 해당 화면의 LifetimeScope 역시 파라미터를 받는 LifetimeScopeWithParameter<T> 를 사용해야 합니다. 그렇게 하면, Builder측에서 화면을 생성할때 자동으로 LifetimeScope 쪽으로 파라미터를 전달해 줍니다.

Last updated