Dropdown은 UI의 기본기로써 여러 목록의 선택지를 쉽게 골라주게 하기위해 Unity에서 기본으로 제공하고 있다.

아래 소스코드는 Dropdown의 목록 생성 및 선택된 value에 대한 출력을 다룬다.


[참고] Dropdown 리스트 중 하나를 선택하면 dropdown.value의 값이 선택지에 대한 배열의 값으로 생성이 된다.

가령 2번째 리스트를 선택한 경우 dropdown.value = 1 이 된다. 이를 이용하여 선택지를 알아내고 값을 응용하여 원하는 셀렉기능을 구현하면 된다.

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

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

public class DropdownExample : MonoBehaviour{
[Header("Dropdown")]
public Dropdown dropdown;

	void Start () {
		SetDropdownOptionsExample();
	}

	void Update () {

	}

private void SetDropdownOptionsExample() // Dropdown 목록 생성
    {
        dropdown.options.Clear();
        for(int i = 1; i < 11; i++) //1부터 10까지
        {
            Dropdown.OptionData option = new Dropdown.OptionData();
            option.text = i.ToString() +"갯수";
            dropdown.options.Add(option);
        }
    }

public void SelectButton() // SelectButton을 누름으로써 값 테스트.
	{
		Debug.Log("Dropdown Value: "+ dropdown.value + ", List Selected: " + (dropdown.value + 1));
	}
}





유니티 하이라키창에 빈 게임 오브젝트를 만든 후 다음의 스크립트를 추가한다.



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class CubeControl : MonoBehaviour {


// Use this for initialization

void Start () {

                GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);    //큐브 오브젝트 생성

cube.transform.position = new Vector3(0, 0, 0);                                 //큐브 포지션 설정

}

// Update is called once per frame

void Update () {

}

}




실행시켜보면 0,0,0좌표에 큐브가 생성된 것을 확인할 수 있다.


게임오브젝트를 큐브뿐만아니라 GameObject.CreatePrimitive(PrimitiveType.Cube); 에서 Cube를 Plane, Sphere, Capsule, Cylinder 등으로 바꾸면 여러가지 


오브젝트로 실행이 가능하다.


그럼 조금 더 업그레이드 해서 큐브를 무한대로 생성시켜보자.



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class CubeControl : MonoBehaviour {

int i = 0;

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

i=i+5;

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

cube.transform.position = new Vector3(i, 0, 0);

}

}


이렇게되면 업데이트 메서드가 호출될때마다 x축으로 5의 간격으로 큐브가 생성될 것이다.




 



+ Recent posts