03, August, 2023

정제로·2023년 8월 3일
0

C#

목록 보기
8/30

현실처럼 시간 흐르게 하기

float time = 0.0f;
.........

time += Time.deltaTime;

이러면 1초에 기본값인 60프레임으로 시간이 흘러가게 된다. (1/60초)

만약 게임의 프레임 설정값이 120프레임이면 1초가 0.5초가 된다. (1/120초)


transform.parent

오브젝트의 부모를 설정하거나 반환한다.

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
무슨소리인지 난 모르겠어서 링크로 대체..


resources 폴더에서 스프라이트 꺼내쓰기

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에 해당하는 이름의 스프라이트가 표시됨.


transform.childCount

해당 부모 오브젝트에 존재하는 자식 오브젝트가 몇개인지 알고 싶을때 사용한다.

int cardsLeft = GameObject.Find("cards").transform.childCount;

"cards" 라는 오브젝트를 찾아서 해당 오브젝트의 자식 오브젝트가 몇개있는지 알아내는 코드

profile
초보자입니다.. 잘못된 정보, 달게 받겠습니다..

0개의 댓글

관련 채용 정보