게임 개발_HISTORY

내배캠_TIL250924 [팀 프로젝트 (계획), Github Desktop] 본문

Development In Unity/내일배움캠프_Unity 12기

내배캠_TIL250924 [팀 프로젝트 (계획), Github Desktop]

EVANJ 2025. 9. 24. 08:59

⏰ 일정

  • 9:00~10:00 1, 2 챕터 강의 내용을 구현 후 Github 

📝 학습 요약

  • Github Desktop을 사용하며 실질적인 문제 해결
  • 카드 뒤집기 프로젝트 강의 1, 2 챕터 기능 팀 프로젝트에서 구현하기

🔍 학습 및 작업 포인트

🔹 GitHub Desktop을 이용할 때 겪었던 문제 해 및 주의점

  • Hierachy 안 각각의 Scene에서 작업 할때 작업물을 날리지 않으려면 Unity Save를 자주 해야하며
    Pull으로 최신화 시키기 전 나의 작업 내역을 해당 브랜치에 커밋해야 한다.
  • 안전한 작업 순서로 다음과 같다.
    1. 작업 시작 전: Fetch/Pull → 최신화
    2. 작업: Hierarchy 변경 후 Ctrl+S (씬/프리팹 저장)
    3. 작게, 자주 커밋 (씬/프리팹, 관련 스크립트, .meta 포함)
    4. Pull 전: 반드시 커밋 또는 Stash
    5. Pull → 충돌 시 Smart Merge로 해결 → 테스트 → Push

🔹 '카드 뒤집기' 프로젝트 개발 실습

기존 5강 '카드 뒤집기' 게임 구조를 팀 프로젝트로 불러와 미니프로젝트에 적용하기로 했다.
팀원 6명이 강의 단원 별로 기능들을 구현하는 업무들을 배분하여 진행했다.

의견을 모아 그려낸 팀장의 S.A
의견을 모아 그려낸 팀장의 WireFrame


✔️ S.A(Starting Assignment)
프로젝트를 시작하기 전 팀원 정보, 와이어프레임(WireFrame), 개발에 필요한 기능, API 명세 등을 기입한 문서로 프로젝트의 전체적인 방향에 대해 간략하게 정리한 문서.

✔️  와이어프레임(WireFrame)
웹(Web) 또는 앱(App) 프로젝트를 진행할 때 웹 페이지의 구조를 제안하기 위한 화면 설계도. 디자인이 들어가기 전 단계에서, 선(wire)을 이용해 윤곽선(frame)을 잡는 것

 

팀원들과 공동 작업을 진행할 때에는 프로젝트의 방향성 유지와 구성원들간의 공유를 위해
S.A 작성과 와이어프레임 설계가 필요하다.

각 팀원들에 순차적인 merge를 이어 받아 필수 기능을 구현했다.

이번 프로젝트에서는 분배할 요소가 적어서
같은 스크립트, 씬, 오브젝트 등을 서로 작업해서 merge 중 conflict가 발생하는 경우가 많았다.
그래서 정상적으로 동작하던 스크립트들도 원인 모를 에러가 발생해 골머리를 앓았다.

최대한 씬은 나누어서 작업하고 같은 스크립트나 오브젝트는 소통하며 서로 작업이 겹치지 않도록 해야되는 주의점을 알게되었다.

 

팀원과 함께 제작한 프로젝트 씬

 

🔸핵심 기능

board.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    void Start()
    {
        int[] arr = { 001122334455 };
        arr = arr.OrderBy(x => Random.Range(0f, 5f)).ToArray();
        //배치하려는 카드가 12개이므로 5f까지 남기기
        for (int i = 0; i < 12; i++)// 12로 변경
        {
            GameObject go = Instantiate(card, this.transform);
 
            float x = (i % 3* 1.6f - 1.6f;
            float y = (i / 3* 1.8f - 3.2f;
            //3개씩 4줄을 내려면 나누기를 4가 아닌 3으로 조정해야 함
            go.transform.position = new Vector2(x, y);
            go.GetComponent<card>().Setting(arr[i]);
        }
 
 
        GameManager.Instance.cardCount = arr.Length;
    }
cs

카드 배치를 3 x 4 로 세팅하고 직사각형의 1.2 x 1.5 값으로 설정했다.

 

Panel.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public Image targetImage;
public Text targetText;
 
public void LoadContent(int idx)
{
    Texture2D loadedTexture = Resources.Load<Texture2D>("6teamMember" + idx);
    if(loadedTexture != null)
    {
        targetImage.sprite = Sprite.Create(loadedTexture, new Rect(00, loadedTexture.width, loadedTexture.height), Vector2.one * 0.5f);
    }
    TextAsset loadedTextAsset = Resources.Load<TextAsset>("text" + idx);
    if(loadedTextAsset != null)
    {
        targetText.text = loadedTextAsset.text;
    }
}
cs

카드를 뒤집어 매치가 되었을 때 나타나는 맴버 카드가 구현되었다.

 

🥏 트러블 슈팅

  • GitHubDesktop을 사용하여 merge를 할 때 conflict가 발생하면 해당 내역을 면밀히 살펴보고 분명하지 않다면 팀원들과 의논 후 두가지 중 최신이며 알맞는 데이터를 병합해야 한다. 오늘 발생한 무수한 병합 오류로 대처방법을 터득했다.
  • BGM이 retry 이후 재생되지 않은 문제
  • Panel이 정상적으로 나타나지 않은 문제
  • 타이머가 게임 성공 이후 계속 작동하는 문제
  • 게임 종료와 동시에 Retry 버튼이 나타나면서 Panel를 가리는 문제

🚀 내일 할 일 (To-do)

  • 필수 기능 및 도전 기능 추가할 부분 논의 및 작업
  • 현재 프로젝트 데이터 다듬기
  • 영상 녹화 기능 사용해 보기
  • PPT 관련해서 논의하기