게임 개발이 처음이어도 쉽게 배우는 모바일 게임 개발 4주차
1.간단한 셔플(랜덤) 배열 및 리스트를 만드는 방법
Using.UnityEngine.Linq
int[] arr = [0,1,2,3,4];
arr = arr.OrderBy(x => Random.Range(0f,4f)).Toarray();
해당 코드는 C#의 Linq 라이브러리의 OrderBy(오름차순 정렬할 매개변수) 메서드 이다.
OrderBy는 복합 정렬을 기반으로 만들어진 정렬 알고리즘이다.
arr.OrderBy(x => Random.Range(0f, 4f)) 메서드를 사용하면 각 요소에 대해 Random.Range(0f, 4f)가 호출되면서 그 결과값을 기준으로 정렬이 진행됩니다. 이때 Random.Range()가 각 요소마다 다른 값을 반환하여 랜덤으로 정렬 하게 됩니다.
정렬한 arr를 Toarray() 함수를 이용하여 배열로 만들고 초기화 합니다.
구체적으로 설명하자면:
OrderBy는 배열의 각 요소에 대해 람다 식 x => Random.Range(0f, 7f)를 실행하여 반환된 값을 기준으로 정렬합니다.
즉 , Random.Range(0f, 7f)는 호출될 때마다 0과 7 사이의 난수를 반환하므로, 배열의 각 요소에 대한 정렬 기준이 모두 다릅니다.
그러나 이 방법은 OrderBy가 Random.Range를 각 요소마다 몇 번 호출할지 제어할 수 없기 때문에,
성능이 중요한 경우 다른 방식의 섞기 알고리즘(Fisher-Yates shuffle)을 사용하는 것이 더 좋다.
성능이 중요한 경우 다른 방식의 섞기 알고리즘(Fisher-Yates shuffle)을 사용하는 것이 더 좋다.
나중에 Fisher-Yates shuffle를 공부를 해봐야겠다.
p.s 람다식이란 이름없는 함수로 간단하게 함수를 변수로 넣을때 사용된다.
하지만 이름이 없기에 재사용 할 수는 없으므로, 재사용 예정이면 따로 함수를 만들어 써야된다.
하지만 이름이 없기에 재사용 할 수는 없으므로, 재사용 예정이면 따로 함수를 만들어 써야된다.
'내일배움캠프_Unity_6기 > TIL(Today I Learend)' 카테고리의 다른 글
TIL : 2024-08-21(수) (0) | 2024.08.21 |
---|---|
TIL : 2024-08-20(화) ::C# Linq.OrderBy() 정렬 알고리즘 ,랜덤으로 원소 섞기(셔플기능) , 광고붙이기(UnityAD) (0) | 2024.08.20 |
TIL : 2024-08-16(금) (0) | 2024.08.16 |
TIL : 2024-08-14(수) (0) | 2024.08.14 |
TIL : 2024-08-13(화) (0) | 2024.08.13 |