float time = 0.0f;
.........
time += Time.deltaTime;
이러면 1초에 기본값인 60프레임으로 시간이 흘러가게 된다. (1/60초)
만약 게임의 프레임 설정값이 120프레임이면 1초가 0.5초가 된다. (1/120초)
오브젝트의 부모를 설정하거나 반환한다.
GameObject newCard = Instantiate(card);
newCard.transform.parent = GameObject.Find("cards").transform;
newCard의 부모를 변경한다 = "cards"라는 오브젝트로 변경한다.
void Start()
{
int[] rand = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
rand = rand.OrderBy(smth => Random.Range(-1.0f, 1.0f)).ToArray();
}
smth변수에 foreach문처럼 생각을 하면 된다.
Random.Range(-1.0f, 1.0f) 로 실수값을 저 범위내에서 랜덤하게 뽑아내고, 뽑히는 순서대로, [0, 0....] rand배열안의 순서대로 저장한다.
ex) [0(0.1515f), 0(0.8f), 1(1f), 1(-0.5748f)....]
후에 rand.orderby로 오름차순으로 배열에 저장된 랜덤한 실수값을 기준으로 정렬한다.
따라서 랜덤하게 rand안의 변수들이 섞이게 되는것이다.
굳이 재사용해야 할 함수가 아닐때, 일회용으로 사용하는 함수라고 생각하면 편하다.
fisher Yates shuffle
무슨소리인지 난 모르겠어서 링크로 대체..
string rtanName = "rtan" + rtans[i].ToString();
newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite =
Resources.Load<Sprite>(rtanName);
newCard객체가 생성되어 있다는 조건
transform.Find("front") :
newCard 오브젝트의 자식 오브젝트 중 이름이 "front"인 오브젝트를 찾는다.
GetComponent<\SpriteRenderer>().sprite :
"front"오브젝트에서 spriterenderer 컴포넌트를 불러온다.
후에 spriterenderer 안에있는 sprite 속성에 로드한 스프라이트를 설정한다.
Resources.Load<\Sprite>(rtanName) :
Resources 폴더에서 rtanName에 해당하는 이름의 스프라이트를 로드함.
newCard 오브젝트의 "front" 부분에 rtanName에 해당하는 이름의 스프라이트가 표시됨.
해당 부모 오브젝트에 존재하는 자식 오브젝트가 몇개인지 알고 싶을때 사용한다.
int cardsLeft = GameObject.Find("cards").transform.childCount;
"cards" 라는 오브젝트를 찾아서 해당 오브젝트의 자식 오브젝트가 몇개있는지 알아내는 코드