목차
C# 개인 학습 및 팀 프로젝트
2025.07.01 - [부트캠프/개인학습] - C# 프로그래밍 기초
컴파일러, .Net Core, 변수, 형 변환 (Casting & Type Conversion), Var 키워드 를 정리했다.
마음 잡고 공부 다시 시작할때마다 반복하던거라서 금방 끝냈고... 심하게 익숙하다ㅋㅋ 고등수학의 행렬같은 녀석들.
2025.06.30 - [부트캠프/본캠프] - [내일배움캠프_2025JUN30]팀 카드 맞추기 게임 + Git
일단 어제 마지막에 발생한 문제는 다른 팀원 분이 알아봐주셨다.
코드에 public으로 설정되어있는 값이 있는데 이 값을 inspector에서 값을 또 넣어져서 그렇다.
이 경우 유니티는 Code를 무시하고 inspector에서 받은 값이 적용된다.
게임 개발 목표 선정 밑 분업
게임 개발 목표 선정 및 분업을 다시 했다.
와이어프레임을 짜면서 같이 하니 아이디어도 더 잘 나오는 것 같고 작업해야할 파트들이 보이는 것 같았다.
우리 게임은 게임 한판 성공하면 팀원을 모을 수 있는 컬렉션 시스템이 있는데,
TitleScene에서 컬렉션을 확인할 수 있도록 버튼을 연결하고, 팀원을 선택하면 선택된 팀원의 디테일한 정보를 출력한다.
뒤로가기 버튼을 누르면 메인화면으로 이동해야한다.
컬렉션 패널과 기존 패널 전환
기존 TitleScene에 있는 Text들이 Screen Space - Overlay 설정으로 되어있기 때문에, 빈 Sprite로 가리려고 해도 되지 않았다.
때문에 UIManager에 Title Panel(기존 TitleScene UI)과 Collection Panel(컬렉션 관련 UI)를 SetActive로 껐다 켜는 로직을 만들어주었다.
Button Component
처음에는 멤버 사진이 띄워져 있는 작은 Sprite image를 클릭하면 하단에 큰 패널을 띄우고 그 안에 정보를 담을 생각이었다.
image 오브젝트에 Button 컴포넌트를 추가했지만 전혀 작동하지 않았다.
찾아보니 Button Component는 UI용 (Canvas 전용) 컴포넌트이다.
일단적인 SpriteRenderer 오브젝트에 붙여도 클릭 인식이 되지 않는다.
따라서 해당 오브젝트에 Canvas-Text를 추가하여 그 안에 Button Component를 추가했다.
참고로 Canvas Render Mode를 World Space로 변경하고 위치와 크기를 딱 맞게 설정하지 않으면 클릭 입력을 받을 수 있는 면적과 실제로 눌려야할 면적이 맞지 않아서 제대로 구현되지 않을 수 있다. 이것 때문에 1시간 넘게 애먹은 것 같다^^
Prefab Start()에서 다른 오브젝트 참조 찾기
MemberCard라는 Prefab에 Info Panel을 연결하려고 하니, 되지 않았다... Type이 mismatch 됬다나 뭐라나...
Prefab은 씬에 있는 오브젝트를 직접 참조할 수 없기 때문이다.
그래서 MemberCard 스크립트에 실행시 자동으로 연결되는 방법을 찾아서 아래와 같이 작성했다.
MemberInfoPanel이 여러개일 경우 어떻게 되는 지 궁금했는데, 먼저 발견되는 하나만 반환된다고 한다.
따라서 태그를 달거나 하는 방법도 괜찮을 것 같다.
//MemberCard.cs
void Start()
{
if (infoPanel == null)
{
infoPanel = FindObjectOfType<MemberInfoPanel>();
}
}
단! 이 경우 infoPanel이 비활성화된 씬에서 시작했다면, 해당 오브젝트를 찾을 수가 없다!
그래서 MemberInfoPanel 하위에 있는 항목들을 비활성화하는 방법으로 우회했다.
OnDisable()
MonoBehaviour는 OnDisable()과 OnEnable() 메서드를 제공한다.
이와 같이, 현재 오브젝트가 비활성화되면 관련된 오브젝트들도 비활성화되도록 활용했다!
이게 호출되는 class에서는 infoPanel을 참조했는데,
현재 비활성화되는 오브젝트를 비활성화하는 코드가 작성된 class에는 참조하지 않았기 때문이었다.
참조가 너무 많아지는 것도 단점이 있을 것 같아서, 그리고 단 한가지 경우인 지금 상황에서만 필요했기에 OnDisable()을 활용했다.
private void OnDisable()
{
Debug.Log("비활성화 되었습니다!");
infoPanel.memberInfo.gameObject.SetActive(false);
}
Update()에서 gameObject.activeSelf로도 파악이 가능하지만,
그럴경우 매 프레임마다 강제로 체크해야해서 성능 낭비가 된다.
느낀점
내가 작성한 코드.. 세상에서 제일 지저분한 코드 같다.
처음에는 어느정도 설계를 하고 진행했던 것 같은데, 구현할때마다 문제가 발생하고 그 문제를 고치기 위해서 우회하다보니까 이렇게 됬다.
강의를 따라가면서 작성하는 TIL은 제공되는 강의자료를 보면서 복습하면 되는데, 직접 프로젝트를 진행하면서 배운 것들은 기억이 나지 않는다.
새롭게 배운 키워드만 그때그때 적어두고 나중에 몰아서 쓰려니, 언제, 무엇을 위해서, 어떻게 하다가 문제에 직면했고, 그 문제를 해결하기 위해 찾아본 자료들, 시행착오, 그리고 결론까지. 대략적으로 적어두고 TIL을 작성하거나, 익숙해질때까지 문제해결할때마다 해당 부분만 TIL을 미리 작성하는 방식으로 당분간 진행하려고 한다.
그리고 업무를 잘게 쪼개는 연습이 필요할 것 같다!
내일 학습 할 것은 무엇인지
컬렉션 획득 유무 판정과 나머지 디테일(설명문, 이미지 위치 등)을 잡아야한다.
또한 VScode에서 한글 주석이 깨지는 게... 나만 그런게 아니었다!
다른 팀원들도 겪고 있었다!
내 생각에는 내 컴퓨터 셋팅 때문인 것 같다.
앞으로 한국에서 계속 사용해야하는만큼 고쳐야함...
예전에 laptop에서도 같은 문제가 발생했었다가 고쳤던 경험이 있으니 내일 오전 중으로 고칠 수 있으면 고치고 프로젝트에 임해야겠다.
'부트캠프 > 본캠프' 카테고리의 다른 글
| [내일배움캠프_2025JUL05] C# 종합 프로그래밍 - 챕터1 (0) | 2025.07.05 |
|---|---|
| [내일배움캠프_2025JUL04] 팀 프로젝트 발표 및 TIL 특강 (0) | 2025.07.04 |
| [내일배움캠프_2025JUL03] C# 개인 학습 및 팀 프로젝트 (0) | 2025.07.03 |
| [내일배움캠프_2025JUL02] C# 개인 학습 및 팀 프로젝트 (0) | 2025.07.02 |
| [내일배움캠프_2025JUN30]팀 카드 맞추기 게임 + Git (0) | 2025.06.30 |