STIKA

내일배움캠프 Unity 4일차 TIL - 2주차 본문

프로그래밍/Unity + C#

내일배움캠프 Unity 4일차 TIL - 2주차

STIKA 2023. 12. 28. 02:32

23.12.27 Wed

 

❤️ TIL

Today I Learned

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


📌 오늘의 계획

  • 2주차 강의 끝내기

 

✏️ 작업 내용

종료조건

public GameObject endPanel;

public void gameOver()
{
    Time.timeScale = 0.0f;
    endPanel.SetActive(true);
}

 

 

Object끼리 충돌 시 사용할 함수

void OnCollisionEnter2D(Collision2D coll)
{
    if (coll.gameObject.tag == "balloon")
    {
        gameManager.I.gameOver();
    }
}

 

 

 

Update 멈추기

Update()와 gameOver() 간의 약간의 시간차가 있기 때문

bool isRunning = true;

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

public void gameOver()
{
    isRunning = false;
    Time.timeScale = 0.0f;
    thisScoreTxt.text = alive.ToString("N2");
    endPanel.SetActive(true);
}

 

 

retry 만들기

Scene을 다시 시작하면 됨

using UnityEngine.SceneManagement;

public void retry()
{
    SceneManager.LoadScene("MainScene");
}

 

 

 

TimeScale

TimeScale이 0일때는 시간이 멈춤 1로 만들어서 다시 흐르게 하기

void Start()
{
    Time.timeScale = 1.0f;
    InvokeRepeating("makeSquare", 0.0f, 0.5f);
}

 

 

PlayerPrefs

유니티에서 데이터 보관하기

저장할때 태그 달아야함

 
PlayerPrefs.SetFloat("bestScore", 어떤숫자값);
PlayerPrefs.SetString("bestScore", 어떤문자열);

불러오기

어떤숫자값 = PlayerPrefs.getFloat("bestScore");
어떤문자열 = PlayerPrefs.getString("bestScore");
 
기존에 있는지 확인
PlayerPrefs.HasKey("bestScore")​
 
지우기
PlayerPrefs.DeleteAll();
 
 
 
GameOver 완성
public void gameOver()
{
    isRunning = false;
    Time.timeScale = 0.0f;
    thisScoreTxt.text = alive.ToString("N2");
    endPanel.SetActive(true);

    if (PlayerPrefs.HasKey("bestScore") == false)
    {
        PlayerPrefs.SetFloat("bestScore", alive);
    }
    else
    {
        if (PlayerPrefs.GetFloat("bestScore") < alive)
        {
            PlayerPrefs.SetFloat("bestScore", alive);
        }
    }
}

 

 

점수 띄우기

 

public Text bestScoreTxt;

bestScoreTxt.text = PlayerPrefs.GetFloat("bestScore").ToString("N2");

 

 

 

애니메이션

idle 애니메이션 만들기

터지는 애니메이션 만들기

충돌 시에 애니메이션 전환

balloon에 끌어다 놓고 add New Clip 해주기

balloon animator 들어가기

idle →  die로 transition만들기

마우스 오른쪽 클릭 make transition하면 됨

 

 

Parameters에, bool 형식의 isDie (대, 소문자 구분 하여) 를 만들기
 
 
has exit time 을 체크 해제 해야 즉시 전환
(딜레이가 있느냐)

 

 

 

Animator

GameManager.cs 에서 animator 받기

balloon 연결하기

public Animator anim;
public void gameOver()
{
	anim.SetBool("isDie", true);
}
 

Invoke

확인할 때 안되는데 애니메이션이 나올 틈이 없이 시간이 멈추기 때문

0.5초 후에 시간을 멈추도록 Invoke 로 처리

Invoke("timeStop", 0.5f);

 

 

 

Destroy

화면 밖으로 나간 Object들 없애기

transform.position.y로 y좌표 구하기

void Update()
{
    if (transform.position.y < -6.0f)
    {
        Destroy(gameObject);
    }
}

 


📝 오늘의 마무리

2주차 강의는 1주차의 복습이여서 하루만에 전부 들을 수 있었다.

1주차때 써봤던 함수를 한번 더 쓰는 식으로 복습했는데

확실히 어제보다 이해가 잘간다.

오늘은 따로 함수를 적어두기로 했다.


 

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

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

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

 

📕 오늘의 학습 키워드

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

📕  오늘의 회고

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

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