배 타다 개발자

[Unity]팝업창 만드는 간략한 워크플로우 본문

Graphics/Unity 3D

[Unity]팝업창 만드는 간략한 워크플로우

노 아 2021. 12. 13. 16:31

Step1. Popup 창으로 쓸 UI Prefab과 동일한 이름의 스트립트 컴포넌트를 붙여준다.

STEP2. 팝업창으로쓸 UI를 디자인 해준다.

Step3. Popup 창으로 쓸 UI Prefab과 동일한 이름의 스트립트 컴포넌트를 붙여준다.

Step4. Binding

팝업시켜줄 프립팹 중에 4가지만 바인딩해주었다.

  • RoomName
    인풋필드로 방이름 입력 받을 떄
  • RoomDescription
    인풋필드로 방에대한 간략한 정보를 입력받을 때

이 둘은 nputFeild 스크립트 컴포넌트에 접근해서
사용자가 입력한 값을 가져오기 위해 게임오브젝트로 바인딩해주었고,

  • CreateButtonCollaboBtn
    방생성하는 버튼 서버 api에 REST API(put)을 던져준다.
  • ClosePopUpBtn
    게임오브젝트를 파괴해서 창을 닫는다.

이 버튼들은 사실 이미지 컴포넌트를 바인딩해서 이미지를 클릭했을 때 묶여 있는 콜백함수를 뱉어주도록 바인딩 하였다.


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;



public class UI_RoomInfo : UI_Base
{

    enum Images
    {
        ClosePopUpBtn, // 닫힘 버튼 이미지
        CreateCollaboBtn, // 협업방생성 버튼 이미지
    }

    enum GameObjects
    {
        RoomName, // 인풋필드에서 협업방이름을 가져올 오브젝트.
        RoomDescription, // 인풋필드에서 협업공간의 설명을 가져올 오브젝트
    }




    public override void Init()
    {
    	// 팝업창이 화면의 중앙에 오도록
        transform.SetParent(GameObject.Find("UI_ExpertModeScene").transform);
        RectTransform myRectTransform = GetComponent<RectTransform>();
        myRectTransform.anchoredPosition = new Vector2(0, 0);

        // Enum들을 이름에 따라서 바인딩 
        Bind<Image>(typeof(Images));
        Bind<GameObject>(typeof(GameObjects));

    }

    private void Start()
    {
        Init();
    }

}