2025.01.13 (월)

윤혜진·2025년 1월 13일
0

TIL

목록 보기
4/42
post-thumbnail

📍오늘 목표

  • 4주차 강의 - 르탄이 카드 뒤집기 게임

📍배운 것

  • OrderBy()를 이용한 배열 정렬
    • OrderBy배열 안의 다양한 값을 정렬해주는 메서드다.
    • 예를 들어, numbers라는 배열 안에 5, 2, 8, 1, 4 라는 숫자 다섯개가 들어있다고 치자.
    • 이 때, numbers = numbers.OrderBy(x => x); 코드를 사용하면 데이터는 오름차순으로 정렬된다. (1, 2, 4, 5, 8)
    • 반대로 위 코드의 (x => x)부분을 (x => -x)로 바꾸면 내림차순으로 정렬된다. (8, 5, 4, 2, 1)
    • 사실 OrderBy는 오름차순과 내림차순 뿐만 아니라 =>옆에 무엇을 놓느냐에 따라 다양한 기준으로 값을 정렬할 수 있는데, 이번에 Random를 이용해 값을 무작위로 정렬한 방법이 이에 속한다. (더 다양한 방법은 기회가 될 때 작성하고 링크를 걸어두겠음)
    • OrderBy(x => Random.Range(0f, 7f))가 작동하는 대략적인 과정은 다음과 같다:

      예를 들어, 이런 배열이 있다고 생각해 보자

      int[] arr = { 1, 2, 3, 4 };

      이 배열에 OrderBy(x => Random.Range(0f, 7f)) 코드를 적용했을 때, 이 코드는 다음과 같은 순서로 작동한다:

      1. 배열의 각 숫자(1, 2, 3, 4)에 대해 0f부터 7f까지의 랜덤한 숫자-실수-를 뽑는다.

      //Random number EX
      1 -> 3.14
      2 -> 0.72
      3 -> 6.53
      4 -> 2.18

      2. 뽑힌 랜덤한 숫자(3.14, 0.72, 6.53, 2.18)를 기준으로 배열을 정렬한다.

      • 정렬 결과: 2(0.72), 4(2.18), 1(3.14), 3(6.53).


      이 숫자는 매번 랜덤을 통해 뽑아내므로, 결과는 늘 다르게 출력된다.

  • $의 사용
    • 문자열 안에 변수를 넣고 싶을 때, "문자열" + 변수명.ToString()을 이용해도 좋지만, $"문자열{변수이름}"을 사용해도 같은 결과가 나온다.
      public void Setting(int number)
       {
           idx = number;
      
           //Resources.Load<Sprite>("rtan" + idx.ToString());와 같은 코드임
           frontImage.sprite = Resources.Load<Sprite>($"rtan{idx}");
       }
      

📍겪은 어려움

  • Random의 모호한 참조 오류
    모호한_참조_오류
    • 내가 뭘 잘못 썼나 싶어서 당황했는데, 알고보니 Random메서드가 C#의 시스템에도, 유니티 엔진에도 있어서 확실히 해달라는 오류였다.
    • Random을 쓰는건 처음이 아니지만, 배열을 쓰기 위해 System을 참조하면서 이제야 보게된 듯.
    • 컴파일러가 헷갈리지 않도록 직접 using Random = UnityEngine.Random; 코드로 지정해주니 잘 돌아갔다. 👉참고 블로그
  • card에 front를 붙이려는데 Type missmatch 오류가 뜸

    • 타입 오류하고 상관이 있는지는 모르겠지만, go.transform.parent = cards코드를 삭제하니 정상적으로 돌아갔다.
    • 아마도 선행되어야 하는 과정을 거치지 않고 수업 자료에 있는 코드를 그대로 넣었다가 오류가 난 것으로 추정
  • Front, Back, Front Image 전부 Type missmatch 오류가 뜸

    • 문제점을 파악하기 위해 코드를 원래대로 돌렸는데도 똑같은 오류가 뜸
    • 설마? 싶어서 유니티를 끄고 다시 켰더니 거짓말처럼 모든게 잘 돌아감….

📍회고 및 반성

  • go.transform.parent = cards 코드같은 경우 강의에선 나오지 않은 코드였음에도, 강의 노트에 적혀있다는 이유로 그대로 썼다가 오류가 났음.
    • 내가 적는 코드가 정확히 어떤 역할을 하는 코드인지 이해하고 쓸 필요가 있어 보임 (쓰기 전에 한 번 생각했으면 이런 오류는 나지 않았을 것)
  • TIL을 쓰면서 느꼈는데, 내가 OrderBy()를 제대로 이해하지 않은 채 대충 넘어갔다는 걸 깨달음
    • 모르는 메서드가 나오면 대충 넘어가지 말고 바로바로 검색하자
    • 그것도 잘 이해가 안되면 바로바로 튜터님께 물어보는 습관을 들이자!!!

0개의 댓글

관련 채용 정보