STIKA

D+20일 TIL < 알고리즘 / Unity 사전 4주차 > 본문

프로그래밍/Unity + C#

D+20일 TIL < 알고리즘 / Unity 사전 4주차 >

STIKA 2024. 1. 22. 21:07

24.01.22 Mon

 

❤️ TIL

Today I Learned

❤️하루에 1%씩만 나아가도 4개월 동안 쌓이면 꽤 덩치가 커진답니다 :)


📌 오늘의 계획

  • 알고리즘 코드카타
  • Unity 사전캠프 4주차 완강

✏️ 작업 내용

✔️ 알고리즘 코드카타

1. 나머지가 1이 되는 수 찾기

using System;

public class Solution {
    public int solution(int n) {
        int answer = 1;

        while (n % answer != 1) {
            answer++;
        }
        return answer;
    }
}

 

2. x만큼 간격이 있는 n개의 숫자

public class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[n];

if (-10000000 <= x && x <= 10000000 && 0 <= n && n <= 1000)
{
    for (long i = 1; i <= n; ++i)
    {
        answer[i - 1] = x * i;
    }
    return answer;
}
return null;
    }
}

 

✔️ Unity 사전캠프 4주차

void Update()
{
    time += Time.deltaTime;
    timeTxt.text = time.ToString("N2");
}

오랜만이라서 

N2 = 0.00 이렇게 숫자 출력

for(int i = 0; i < 16; i++)
{
    GameObject newCard = Instantiate(card);
    newCard.transform.parent = GameObject.Find("Cards").transform;
}

 

cards안에 오브젝트가 생기게끔하기

for(int i = 0; i < 16; i++)
{
    float x = (i / 4) * 1.4f - 2.1f;
    float y = (i % 4) * 1.4f - 3.0f;

    newCard.transform.position = new Vector3(x, y, 0);
}

 

using System.Linq;

int[] arr = { 1, 3, 5, 4, 0, 2, 5 };
arr = arr.OrderBy(item => item).ToArray();

OrderBy 정렬용

값의 순서대로 정렬해줘

작은수→큰수

 

using System.Linq;

int[] rtans = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
rtans = rtans.OrderBy(item => Random.Range(-1.0f, 1.0f)).ToArray();

순서상관없이 랜덤으로 정렬해줘

 

Invoke (법·규칙 등을) 들먹이다[적용하다]

public void destroyCard()
{
    Invoke("destroyCardInvoke", 1.0f);
}

void destroyCardInvoke()
{
    Destroy(gameObject);
}

1초뒤에 destroycardInvoke를 호출해줘

 

public void openCard()
{
    // Animator isOpen  -> true
    anim.SetBool("isOpen", true);

    // Front-> setActive = true
    transform.Find("front").gameObject.SetActive(true);
    
    //back -> false
    transform.Find("back").gameObject.SetActive(false};
}

opencard시 입력되어야하는것들

public void isMatched()
{
    //여기서 무엇인가 판단함
    //First card, second card가 같은지

    string firstCardImage = firstCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite.name;
    string secondCardImage = secondCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite.name;
}

첫번째카드의 front를 찾아서 그것의spriterenderer를가져오고 그것의 이름을 알려줘

 int[] rtans = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 };
 rtans = rtans.OrderBy(item => Random.Range(-1.0f, 1.0f)).ToArray();

 for (int i = 0; i < 16; i++)
 {
     GameObject newCard = Instantiate(card);
     newCard.transform.parent = GameObject.Find("Cards").transform;

     float x = (i / 4) * 1.4f - 2.1f;
     float y = (i % 4) * 1.4f - 3.0f;

     newCard.transform.position = new Vector3(x, y, 0);
     
     string rtanName = "rtan" + rtans[i].ToString();
     newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(rtanName);
 }

asset에 Resources라는 폴더를 만들고 거기에 이미지를 넣으면

원하는 리소스를 가져올수있음

 

if (firstCardImage == secondCardImage)
{
    firstCard.GetComponent<card>().destroyCard();
    secondCard.GetComponent<card>().destroyCard();
}
else
{
    firstCard.GetComponent<card>().closeCard();
    secondCard.GetComponent<card>().closeCard();
}

card라는 스크립트를 가져와서 거기의 어떤 함수 사용


📝 오늘의 마무리

오랜만에 유니티를 쓰니까 재밌다

사전캠프 유니티를 다 못들었었어서 그거부터 듣고 하려고  했는데..

본과정 들어야하는데 하염없이 밀리는중..


 

✏️ 스스로 어제보다 한 발 더 나아갔다는 것을 자각하기

✏️ TIL을 쓰기 위해서라도, 오늘 반드시 단 하나라도 배우기

✏️ 꾸준히 기록을 남기는 습관 가지기

 

📕 오늘의 학습 키워드

📕  공부한 내용 본인의 언어로 정리하기

📕  오늘의 회고

📕  12시간 중 얼마나 몰입했는지

📕  더 나은 미래를 위해 내일 어떤 공부를 진행할 것인지