Unity 프로젝트를 위한 GitHub 특강
Git 협업 시 주의사항
- Assets, Packages, ProjectSettings만 올리면 됨
- .gitignore 중요 별표 백만개
- 각자 작업의 파트를 분리
- 해당하는 파트의 스크립트만 만들어서 생성 / 관리
- 각 UI별로 할 일을 나누는 것도 좋은 방법
- Git은 한 번이라도 Push 하면 기록이 남음
- Commit은 한 번에 하나의 작업 단위로 올리는 것이 좋음
- Scene, Prefab은 수정할 때 꼭 미리 공유하고 진행
Tip
튜터님 답변 정리
Find 함수를 사용하지 않으면 어떻게 오브젝트를 불러오나요
- 튜터님은 같은 프리팹 내에서는 [SerializeField]로 선언해주고 Inspector 창에서 연결시켜준다고 하셨다.
- UI의 경우에는 기능별로 클래스를 만들고, 해당 UI에 스크립트를 연결
-> 이 UI들을 한 번에 관리하는 곳이 UI Manager이고, UI Manager에서는 다른 곳에서 UI 기능을 호출할 때 적절한 클래스로 연결시켜주는 역할
- UI Manager에서 UI 클래스들을 관리하는 방법은 변수로 선언하는 것이 아닌 Dictionary(Java로 치면 Map)에 담는 것
클래스의 이름이 Key 값이 된다.
스테이지 점수를 표시하는 별 이미지를 Load 해서 넣는 방법 vs 미리 만들어놓고 SetActive로 설정
- 지금은 비어있는 별과 채워져있는 별 두 가지밖에 없기 때문에 SetActive로 설정하는 것이 성능 면에서는 더 낫다.
-> Load는 많을수록 성능에 안 좋음
DontDestroyOnLoad의 중복 생성 문제
- Hierarchy 창에 StageManager를 꺼내놓지 말고, null일 때 new GameObject로 생성하게 하는 방법
- DataManager를 두고 필요한 Data들을 관리하는 방법
팀 프로젝트
GameOverPanel
- 원래는 Stage 클래스에서 StageUIManager를 호출 -> Stage 패널을 Set할 것을 요청
이런 로직이었는데 튜터님한테 질문했던 내용을 바탕으로 수정 중이다.
Stage 클래스에서 StageUIManager가 가진 gameOverPanel을 호출 -> Stage 패널을 Set할 것을 요청
GameOverPanel 스크립트는 GameOverPanel에게 주고, Inspector 창에서 하위 오브젝트들을 연결
- GameOverPanel
- 현재 이미지를 Load하는 부분도 비어있는 별과 채워진 별 이미지를 각각 만들고 SetActive로 바꿀 예정이다.
- SetBtn은 Awake 쪽으로 옮길 예정
private void SetStarImage(int starRating)
{
Sprite filledStar = Resources.Load<Sprite>("Image/StarImage/filled_star_img");
Sprite emptyStar = Resources.Load<Sprite>("Image/StarImage/empty_star_img");
_star1Image.sprite = (starRating >= 1) ? filledStar : emptyStar;
_star2Image.sprite = (starRating >= 2) ? filledStar : emptyStar;
_star3Image.sprite = (starRating >= 3) ? filledStar : emptyStar;
}
private void SetBtn()
{
_homeBtn.onClick.AddListener(() => { GameManager.I.GoHome(); });
_retryBtn.onClick.AddListener(() => { GameManager.I.RetryGame(); });
_nextStageBtn.onClick.AddListener(() => { GameManager.I.GoNextStage(); });
}
- 그리고 짜잔~ 디자인.. 근데 배경이 없어서 구려보임 ㅇㅅaㅇ
TODO
- GameOverPanel에 비어있는 별과 채워진 별 이미지 추가
- StageUIManager와 GameOverPanel의 분리 + 이에 따른 로직 수정
- GameManager의 GoHome, RetryGame, NextStage 함수 로직 완성
- GoHome의 경우 DataManager를 StartScene에 생성해서 DontDestroyOnLoad로 넘기는 방법 시도해보기
야근이다!!! 야근!!!!!!!!!!!
끗 ..