스파르타 게임개발종합반(Unity)/사전캠프 공부 기록

[Unity/2D] 랜덤 정렬한 값을 카드에 넣어주기 - GetComponent

테크러너 2024. 4. 8.

이전편 참고해주세요!

2024.04.08 - [Unity/2D] - [Unity/2D] 랜덤 정렬 - OrderBy, OrderByDescending, ToArray, Random.Range

 

 

 

랜덤 정렬한 값을 카드에 넣어주기

public class Card : MonoBehaviour
{
    int idx = 0;

    public void Setting(int number)
    {
        idx = number;
    }
}

이전에 만들었던 카드 프리팹Card.cs를 붙여줬습니다.

Setting 함수는 number 멤버변수에 값이 들어오면 idx라는 변수에 초기화하는 기능입니다.

이전편에서 Board로 랜덤 정렬한 arr배열의 요소를 number 멤버변수에 하나씩 불러오게 됩니다.

 

    void Start()
    {
        int[] arr = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
        arr = arr.OrderBy(x => Random.Range(0f, 7f)).ToArray(); 

        for (int i = 0; i < 16; i++)
        {
            GameObject go = Instantiate(card, this.transform); // 임시 변수

            float x = (i % 4) * 1.4f - 2.1f; // 나머지 * 카드 간격
            float y = (i / 4) * 1.4f - 3.0f; // 몫 * 카드 간격

            go.transform.position = new Vector2(x, y); // 카드 배치
            go.GetComponent<Card>().Setting(arr[i]);
        }
    }

마지막 줄에 'go.GetComponent<Card>().Setting(arr[i]);'가 추가되었죠? 이 부분을 통해 카드마다 랜덤한 숫자값을 지정해주게 됩니다.

 

 

idx값 디버깅하기

실행을 하고 idx값에 잘 넣어졌는지 확인해보고 싶은데 idx가 public이 아니라서 확인할 수가 없습니다.

 

Inspector 문구에 우클릭 해주시고, Debug를 눌러주시면

 

이렇게 idx 값을 확인할 수 있습니다. 수정은 못합니다!

 

 

 

다음편에서는 코드를 통해 카드마다 이미지를 넣어보도록 하겠습니다~

2024.04.08 - [Unity/2D] - [Unity/2D] 코드를 통해 이미지 받아오기 - Resources, Resources.Load, 문자열 보간, $

반응형

댓글