본문 바로가기
Unity/수업내용

[Unity UI] 1일차 Button

by 왹져박사 2023. 2. 6.
728x90

! UI는 순서대로 쌓여 화면에 출력됨( Hierachy 순서 중요) !

 

btnBlue는 Main에서 직접 이벤트를 관리, 

btnYellow와 btnGreen은 Button들을 관리하는 UIButtons에서 이벤트를 관리하는 방법으로 코드를 작성하였다. 

 

UIButtons

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

public class UIButtons : MonoBehaviour
{
    public enum eBtnTypes
    {
        Yellow, Green
    }
    public Button[] arrBtns;

    public Button btnBlue;

    public System.Action<eBtnTypes> onClick;

    private void Start()
    {
        for(int i = 0; i < arrBtns.Length; i++)
        {
            this.arrBtns[i].onClick.AddListener(() =>
            {
                this.onClick((eBtnTypes)i);
            });
        }
    }
}

ButtonSceneMain

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

public class ButtonsSceneMain : MonoBehaviour
{
    public UIButtons uiButtons;


    void Start()
    {
        this.uiButtons.onClick = (btnType) =>
        {
            Debug.Log(btnType);
        };

        this.uiButtons.btnBlue.onClick.AddListener(() =>
        {
            Debug.Log("Blue");
        });
    }
}

하지만 위와 같이 for문의 델리게이트 내의 변수를 불러온 후 출력한 btnType은 0, 1이 아닌 2로 출력되었다. 

2023.02.06 - [Unity/수업과제] - [Unity] AddListener와 for문

 

[Unity] AddListener와 for문

2023.02.06 - [Unity/수업내용] - [Unity UI] 1일차 Button [Unity UI] 1일차 Button btnBlue는 Main에서 직접 이벤트를 관리, btnYellow와 btnGreen은 Button들을 관리하는 UIButtons에서 이벤트를 관리하는 방법으로 코드를

narmhye.tistory.com

 

728x90