[공부 내용]
1. 유니티 개발 화면 개념 알기
- Scene : 실제 게임의 구성요소를 보는 곳. 실질적인 게임 개발 씬
- Game : 게임이 실제로 보여지는 곳. play 버튼 클릭 후 볼 수 있음
- Hierarchy : 게임 내 구성요소를 볼 수 있는 곳. 개발 시 자주 필요
- Project : 이 프로젝트에 포함된 파일들을 모아볼 수 있는 곳
- Inspector : 클릭한 요소의 속성과 정보를 보여주는 곳(차차 보면 알게 됨!)
2. UI박스(점수) 세팅하기
- Inspector > Order in layer: 2D view에서 앞으로 오는 것을 지정
3. 르탄이 움직이기 (애니메이션 및 스크립트)
- 애니메이션) 렌더링 이미지 변경은 애니메이션 창에서 이미지 끌어다 넣으면 알아서 바뀜
- Start와 update함수는 자주 쓰이기 때문에 미리 넣어준 것
- transform.position += new Vector3(0.05f, 0,0); // 여기서 0.05f는 속력의 개념이라 할 수 있음
- 이미지의 좌우반전: transform.localScale 활용 (오브젝트의 스케일을 변경하는 것)
- 코드 정리하기: transform와 같은 설정의 반복을 줄일 수 있도록 변수를 잘 활용하기
4. 빗방울 코딩하기
- 충돌 조건: 충돌체 둘 다 Collider가 있어야 한다. 둘 중 하나는 Rigidbody가 있어야 한다.
- void OnCollisionEnder2D(Collision2D coll): 여기서 coll은 내가 부딪힌 상대 충돌체를 의미
- 랜덤한 숫자 지정: Random.Range(n.nf, n.nf)
- 색 변경: GetComponent<SpriteRenderer>().color = new Color(100 / 255f, 100 / 255f, 255 / 255f, 255 / 255f); //255f로 나눠주는 것 주의하기
- GameManager: 게임 전체를 조율하는 오브젝트! (점수, 다시 시작, 3번 째 다시 시작에서 부스터, 광고보기 등) – 빈 곳에 Empty Object 만들고 “gameManager”로 만들어주기!
- InvokeRepearting: 같은 행위를 주기적으로 반복
- Instantiate: 복제 함수
5. UI 보드
- UI란? 카메라와 상관 없이 보여지는 오브젝트
- 싱글톤: 게임 전체의 점수나 아이템 등은 게임매니저가 관리하는데 이벤트들을 직접 겪는 것은 오브젝트들임. 따라서 게임 전체의 기록을 위해서는 게임매니저에게 보고할 필요가 있음. 그리고 게임매니저는 단 하나만 존재해야 함. 싱글톤이란? 어디서도 부를 수 있는 '하나'로 만들어주는 것!
- 게임매니저 스크립트에 싱글톤 코드 추가해서 유일한 게임매니저로 만들기
- 게임매니저 스크립트에 다른 오브젝트들이 기록을 요청할 수 있는 함수(public) 생성하기
- 오브젝트 스크립트에서 GameManager.I.함수( ) 호출하면 끝! (I를 꼭 넣어야 싱글톤 유지)
6. 게임 끝내기
- Time.deltaTime: 몇 초가 흘렀는지 알려주는 함수
- UI의 text 변경할 때 ToString( ) 종종 쓰는데, 이 때 ToString(“N2”)와 같이 값을 넣으면 소수점 자릿수를 조절할 수 있음
- Time.timeScale: 시간의 속도 및 정지 설정이 가능한 함수
- 시간을 멈추게 되면 시간의 영향을 받는 모든 움직임이 정지됨 (ex. Rigidbody에 의한 낙하)
- Instantiate, 낙하 등은 멈춤
- Update 함수에 의한 캐릭터의 움직임은 멈추지 않음 (기준 알아보기)
- 시간을 멈추게 되면 시간의 영향을 받는 모든 움직임이 정지됨 (ex. Rigidbody에 의한 낙하)
- 다시 시작 = 메인씬을 새로고침 한다는 개념
- retry 함수 생성, SceneManager.LoadScene(“MainScene”)
- 초기화 함수 필요 (모든 값을 리셋하도록 설정)
- Retry와 같은 주요한 기능은 GameManager에 세팅하는 것이 안전
- 패널 버튼화
- 패널 자체를 버튼으로 만들기: Add Component --> Button
- 버튼 속성의 on click 이벤트와 연결: 클릭되는 대상(panel 자체)를 드래그드롭, function에서 retry 선택
rain의 addScore함수는 다시 함수 선언을 하지 않았는데 panel의 retry는 함수선언을 하는 이유가 이 때 선택을 위해서일까...?
[기록]
공부 내용에서는 수업에서 다룬 것 중 이미 익숙한 것 외에 새롭게 배운 것이나 명확하게 짚고 넘어가는 것이 좋을 것이라 판단한 것들을 기록했다. GameManager 활용과 게임의 전체적인 기능 관리 방법을 배우지 않은 채로 프로젝트를 시도했을 때와 배운 후 만들어보는 것은 체계성에서도, 내가 작업물을 이해하는 데에서도 차이가 많이 났다. 유니티를 3D로 시작했는데, 2D를 통해 좌표나 Canvas, UI에 먼저 익숙해졌다면 유니티를 이해하는 데 더 많은 도움이 되었을 것 같다는 생각이 들었다. 유니티 엔진의 기능을 이해하고 활용할수록 의욕과 재미가 더해진다.
더 찾아볼 부분:
- GameManager를 통해 함수를 호출할 때, rain의 addScore함수는 다시 함수 선언을 하지 않았는데 panel의 retry는 함수선언을 하는 이유를 더 명확하게 짚고 넘어가야 할 것 같다.
- Time.timeScale 변화 줬을 때 영향을 받는 것과 받지 않는 것 알아보기
'👾 내일배움캠프 > 🃏 사전캠프' 카테고리의 다른 글
C# 기초 - 기록1 (0) | 2023.08.02 |
---|---|
유니티 입문 5일차 - 런칭 준비하기 (0) | 2023.08.01 |
유니티 입문 4일차 - 르탄이 카드 뒤집기 게임 (0) | 2023.07.31 |
유니티 입문 3일차 - 고양이 밥주기 (0) | 2023.07.31 |
유니티 입문 2일차 - 풍선을 구해라! (0) | 2023.07.31 |