내일배움캠프 Unity_4기 2주차 사전캠프 개발일지 및 후기

2024. 3. 31. 22:00나의 개발자 기록/사전 캠프 개발 일지

2024년 3월 25일 월요일

 

오늘은 2주 차의 시작이기 때문에 주말에 복습했다고 하더라도 1주 차 때, 공부했던 C# 사전 문법 기초의 내용들을 간단하게 복습하고, 개임 개발 종합반 1주 차 강의인 빗물 받는 르탄이 프로젝트의 스크립트에 여러 가지 기능들이 어떤 역할을 하는지 주석으로 설명문을 추가하면서 복습하였습니다.

 

그 다음에는 저번주 금요일날 예습했던 2주 차 강의인 '풍선을 지켜라'를 다시 들으면서, 강의를 끝까지 들었고, 마지막에 '떨어지는 네모를 없애라'라는 숙제가 있었는데, 이 숙제가 풍선을 지키다가 화면 밖에 떨어진 게임 오브젝트들이 사라지지 않는 문제를Destroy(gameobject) 함수를 통해서 해결해야 하는 숙제였습니다.

저는 먼저 이 문제를 해결할려면, 화면 밖에 떨어진 시점의 y값보다 작아질 때 사라지게 끔 만들어야 한다고 생각했습니다. 그렇기에 먼저 if문을 사용하고 조건에 transform.position.y < -6.0f를 적고, 실행 내용에 Destroy(this.gameobject)를 추가하여 해결한 줄 알았지만, 막상 실행하고 나니 작동이 안 되는 문제가 있었습니다. 자세히 살펴보니 실수로 Update문이 아닌 Start문에다가 적은 것이 문제여서 잘라내기 후에 다시 붙여서 최종적으로 밑의 코드가 완성이 되어 숙제를 해결하였습니다.

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



숙제가 간단하면서도 어렵지 않아서 혼자 생각하고 해결하기가 많이 편했습니다. 그리고 이번 강의가 빗물 받는 르탄이 게임을 다른 게임 형태로 복습하는 것이여서 그런지 처음 한 것보다는 많이 수월했고, 이해하기가 쉬웠습니다. 내일은 2주차 강의를 다 듣고 실습했다고 해서 3주 차 강의로 넘어가지 않고, 강의를 다시 들으면서 메모장에 내용을 정리하려고 합니다. 또한 저번주에 복습이 중요하다는 것을 깨달았기 때문에, 앞으로도 계속 복습하고, 코드를 직접 반복적으로 활용해보면서 더욱더 숙달하도록 하겠습니다.


2024년 3월 26일 화요일

 

오늘은 2주차 강의인 풍선을 지켜라를 다시 처음부터 들으면서 유니티의 여러 가지 기능들이나 C# 스크립트의 실습했던 내용들, 그리고 다양한 함수들의 기본 개념들을 메모장에다가 정리하였습니다.

 

위의 사진대로 정리하다보니 확실히 머릿속에 내용들이 속속 들어오는 것 같습니다. 그리고 강의를 보면서 중요하다고 생각하는 내용이나 새로 배운 내용들을 개발일지에 기록해 두면 좋을 것 같아서 남겨보려 합니다.

싱글톤 만들기

// 싱글톤이란? "너는 딱 하나야!" 라고 할 수 있게 세팅해 두는 것 (그래야 다른 데서 나를 부를 수 있습니다!)
// Instance == null 이란? null은 비어있다는 뜻이고, 이 변수가 비어있을 때, Instance = this를 해주겠다는 뜻

public static GameManager Instance; : 다른 스크립트에서 불러올 수 있는 사전 작업

private void Awake() : 싱글톤을 만들기 위한 함수
{
if(Instance == null) : 비어있을 때 조건문 실행
{
Instance = this; : 나 자신(게임 매니저의 데이터를) 넣어주는 역할
}
}


일단 싱글톤이라는 개념을 통해서 스크립트가 "너 하나 뿐이야"라고 세팅해 두면 다른 스크립트에서 해당 스크립트를 불러올 수 있는
역할을 한다는 것이 매우 중요하다가 생각했습니다. 그리고 1주차 강의 때에는 Instance == null이라는 표현이 없었는데, 이번 시간부터는 이 표현이 변수가 비어있을 때, Instance = this를 해준다는 것을 알게 되었습니다.

그다음 새롭게 배운 함수에 대해서는 PlayerPrefs라는 함수로 데이터를 보관해 줄 수 있는 함수라고 합니다.

PlayerPrefs.SetFloat("name", 어떤 숫자값); : 실수 데이터 저장하기
PlayerPrefs.SetString("name", 어떤 문자열); : 문자열 데이터 저장하기

어떤 숫자값 = PlayerPrefs.GetFloat("name"); : 실수 데이터 불러오기
어떤 문자열 = PlayerPrefs.GetString("name"); : 문자열 데이터 불러오기

PlayerPrefs.HasKey("name") : 데이터를 저장했었는지 확인하는 수단, 있으면 true, 없으면 false

PlayerPrefs.DeleteAll(); : 데이터를 모두 지우기

이렇게 새롭게 배운 함수들도 다양한 곳에서 쓰일 것 같아서 개발일지에 남겨봅니다.

확실히 처음에는 강의를 따라 실습하면서 다양한 기능들을 써보는게 도움이 많이 되고, 다 듣고 나서 메모장같은 곳에다가 정리를 해두니까 실습했던 내용들이 떠오르기도 하고, 사용했던 함수들이 어떤 역할인지, 어떤 기능인지 확실하게 알 수 있어서 좋았습니다.
앞으로도 배웠던 내용들이나 중요한 내용들을 개발일지에도 남기고 메모장에다가도 정리하면서 복습하겠습니다!


2024년 3월 27일 수요일


 

오늘은 쉬어가는 느낌으로 C# 사전 문법 기초의 내용을 천천히 복습하고, 1주 차 강의의 내용을 정리했던 메모장과 프로그램을 바탕으로 복습했으며, 어제 2주 차 강의의 내용들을 메모장에 정리했던 것처럼, 이번에는 메모장을 바탕으로 프로그램에 따로 간단하면서도 의미 있게 정리해서 재차 강의를 볼 때, 이 정리된 프로그램을 바탕으로 사용했던 함수나 기능들이 어떠한 역할과 기능을 하는지에 대해 알 수 있도록 만들었습니다.

그다음에, 5시부터 '무엇이든 물어보살!'이라는 매니저님들께서 여러 가지 질문을 받고 답해주는 이벤트를 준비해 주셔서일상생활에서의 다양한 질문들이나, 코딩과 같은 유니티 관련 질문, 진로와 관련된 질문 등등 다양하고 구체적으로 답해주셨으며, 특히나 더 좋았던 것은 본 캠프 때 어떤 식으로 진행되고, 흘러가는지 구체적으로 설명해주셨기 때문에 저에게 있어서 도움이 많이 되었던 시간이었습니다.

복습하면서 약간의 지루함도 없지 않아 있었지만 매니저님들께서 준비해주신 시간 덕분에 머리를 식히는 계기가 되었고, 내일부터 새로운 것을 배운다는 느낌으로 3주차 강의를 들으려고 합니다.


2024년 3월 28일 목요일

 

오늘은 어제 얘기했다 싶이 3주 차 강의인 고양이 밥주기 게임 만들기의 내용을 듣고 따라 실습했습니다. 이번 강의 때에는 스파르타 측에서 준비해주신 이미지 자료를 토대로 만들었는데, 저번 시간때 보다는 조금 다양하게 구성되어 있었습니다.

 

따라 실습하다보니 1~2주 차 때 사용했던 기능들이나 함수들도 사용했었고, 새롭게 배운 내용들도 있었습니다. 그리고 이번 시간에도 마찬가지로 '해적 고양이 만들기'라는 숙제가 있었는데, 이 숙제는 기존에 만들어 놨던 기본 고양이 프리팹(NormalCat Prefeb)을 unpack 해서 3번째 타입인 해적 고양이(PirateCat)으로 바꾸는 작업을 하고,

Cat.cs Start 부분에는 

else if(type == 3)
{
    speed = 0.1f;
}


해적고양이 타입인 3번째 추가해주었으며,

GameManager.cs의 makeCat 부분에는

else if(level == 3)
{
    Instantiate(fatCat);
}
else if (level >= 4) 
{
    Instantiate(pirateCat);
    Instantiate(fatCat);
}



기존의 '>= 3'은 '==3'으로 바꿔주고, '4와 같거나 이상일 때(>=4)'를 추가하여 뚱뚱한 고양이(FatCat)와 해적 고양이(PirateCat)가 등장하도록 설정해 주었습니다.그런데 이렇게 설정하게되면 난이도가 너무 어렵기 때문에 고양이의 생성 속도를 1.5f로 낮춰줘서 어느 정도의 밸런스를 챙겼습니다. 이렇게 게임을 만들다보니 강의의 내용을 따라 만드는 것도 재미있었고, 숙제를 직접 생각하고, 난이도도 생각하니까 유니티 숙련도도 올라가고, 재미도 늘어나서 굉장히 좋은 공부를 한 것 같습니다. 내일은 이번 3주차 강의를 다시 보고 들으면서 메모장에도 정리하고, 프로그램에다가도 정리해서 좀 더 유니티 숙련도를 올리고자 합니다!


2024년 3월 29일 금요일


 

오늘은 고양이 밥주기 게임 3주 차 강의를 다시 보고 들으면서 사용했던 함수나 기능, 변수들을 설명과 함께 메모장에 적으면서 복습하는 시간을 가졌습니다.

 

그 중에서도 유니티 상에서 중력과 같은 물리를 적용하기 위한 Rigidbody 2D의 기능 중에서 body 타입을 키네마틱으로 바꿔주면 중력도 없어지고, 1주 차 및 2주 차 강의 때 사용했던 충돌 옵션인 OnCollisionEnter2D의 기능을 사용하지 못한다는 사실을 알게 되었습니다. 그렇다면 OnCollisionEnter2D 기능 대신에 사용할 수 있는 기능이 바로 Collider 2D의 is Trigger 기능을 체크하고, 스크립트 내에서 OnTriggerEnter2D 라는 기능을 사용하면 해결이 된다는 것도 알게 되었습니다. 또한, 오브젝트를 생성해주는 함수인 Instantiate에 세부 설정을 통해 위치값과 회전값도 들어갈 수 있다는 사실도 알았습니다.

이처럼 오늘은 중요하거나 새롭게 배웠던 내용들에 대해서 다시 복습하는 시간이 되었고, 새롭게 알게 된 내용이나 지금까지 사용했던 기능 및 함수들을 다시 적으면서 어떤 역할을 하는지에 대해 적어서 복습하니까 확실히 머릿속에 잘 남는 듯한 기분이 들었습니다.
앞으로도 공부를 열심히하고, 복습도 열심히 해서 본캠프 때에도 뒤처지지 않게 열심히 노력하도록 하겠습니다!


2주 차 개발일지 및 계획

 

내일배움캠프 사전캠프를 시작한 지 엊그제 같은데, 벌써 2주 차가 지나버렸습니다. 시간이 너무 빨리 가는 것 같습니다. 하여튼 간에 이번주에는 게임 개발 종합반 강의인 '풍선을 지켜라' 게임과 '고양이 밥주기' 게임 강의를 듣고 메모장에 정리한 후, 유니티 프로그램에 따로 정리하면서 공부하고 복습하였습니다. 또한 각각의 숙제를 어떤 식으로 해결했는지, 어떤 방법을 사용했는지에 대해서 적었고, 중요하다고 생각하는 내용을 개발일지에 남기면서 정리하였습니다. 그리고 이번 주말에도 제가 정리해 놨던 메모장과 프로그램을 바탕으로 다시 복습하였고, 이제 점점 유니티 프로그램과 비주얼 스튜디오에 익숙해지기 시작하는 것 같습니다.

 

일단 최종 목표는 일본 업계 취업이지만, 일단은 첫 단추로서 사전 캠프 때 배울 수 있는 것은 모두 배우고, 이 배웠던 것들을 까먹지 않게 복습을 계속해서 하는 것이 제일 중요하다고 생각합니다. 그리고 두 번째 단추로서 본 캠프 때 주어지는 프로젝트에 최선을 다하고 가르쳐주시는 모든 것들을 제 것으로 만들도록 열심히 하겠습니다!