Unity 본캠프 1일차 - 미니 프로젝트/Git

한예준·2025년 4월 7일

본캠프가 시작되었다. Git에 관한 특강 내용에 더해 따로 공부한 내용을 작성해보겠다.


GitGitHub 사용법 기초 정리

오늘은 GitGitHub 사용법에 대해 배웠다.
처음 접하는 사람도 이해할 수 있도록 간단하게 정리해본다.


Git이란?

Git = 버전 컨트롤 시스템

개발을 하다 보면 코드가 점점 복잡해지고, 여러 명이 동시에 작업하게 되면서 버전 관리가 정말 중요해진다.
Git은 이런 상황에서 굉장히 유용하다.

  • 팀원들과 같은 파일을 수정할 때 충돌 방지
  • 코드에 문제가 생겼을 때 이전 버전으로 되돌리기
  • 기능별로 버전을 나누고 관리
  • 언제, 누가, 무엇을 변경했는지 추적 가능

GitHub란?

GitHub는 Git을 온라인에서 관리할 수 있게 도와주는 플랫폼이다.
내 Git 저장소(Repository)를 클라우드에 올려서 여러 사람과 협업하거나, 백업하거나, 포트폴리오로 활용할 수 있다.


Repository(저장소) 생성법

GitHub에서 새 저장소를 만들 때는 다음 순서를 따른다:

  1. New Repository 클릭
  2. 저장소 이름 입력
  3. Public / Private 선택
  4. .gitignore, README.md 선택 여부 결정
  5. Create 버튼 클릭

.gitignore 설정

.gitignore 파일은 Git이 무시해야 할 파일 목록을 적어놓는 곳이다.
예를 들면:

  • 빌드 파일
  • 환경 설정 파일 (.env)
  • IDE 관련 설정 파일 등

예: Unity 프로젝트에서는 /Library, /Temp, .vs, .idea 등을 무시 처리


Branch란?

Branch는 기능 개발을 독립적으로 할 수 있게 해주는 갈래(branch)이다.
main 브랜치를 건드리지 않고 실험하거나 새로운 기능을 개발할 때 사용한다.

  • main: 안정적인 배포용 브랜치
  • feature/login: 로그인 기능 개발용 브랜치
  • bugfix/header: 헤더 버그 수정용 브랜치

작업이 끝나면 다시 main 브랜치로 Merge한다.


GitHub Desktop이란?

GitHub Desktop은 Git 명령어를 GUI(그래픽 인터페이스)로 쉽게 사용할 수 있게 도와주는 프로그램이다.

  • 커밋, 푸시, 풀, 브랜치 생성 등을 클릭으로 가능
  • Git이 익숙하지 않은 초보자에게 추천

GitHub 사용법 요약

  1. GitHub에서 Repository 생성
  2. 로컬에서 git clone으로 복사
  3. 작업 후 git add, git commit, git push
  4. GitHub에서 Pull Request로 코드 리뷰 및 Merge

Branch 관리법

  • 새 브랜치 생성: git checkout -b feature/my-feature
  • 브랜치 목록 확인: git branch
  • 브랜치 전환: git checkout main
  • 브랜치 삭제: git branch -d feature/my-feature

미니 팀 프로젝트

본격적으로 팀 프로젝트를 시작했다. 미니 프로젝트 주제는 4주차에 진행했던 카드 뒤집기 게임과 같지만, 기능을 몇가지 추가한 프로젝트이다. 다같이 와이어프레임을 짜고, 이에 맞춰서 역할분담을 했다. 나는 그 중 card와 관련된 전반을 맡기로 했다. 팀장이 GitHub를 통해서 공유한 Unity 프로젝트를 팀원들이 각자 받은 후, 각자 맡은 기능을 각자의 Branch에서 작업하였다.


카드 프리팹 만들기

지금까지 배웠던 내용들을 복습해보는 느낌이라 그리 어렵진 않았다. 각자의 사진들을 가지고 Resources를 만들었는데, 이전에 수업에선 정해진 규격의 이미지를 사용해서 수월했지만, 각각 다른 크기의 이미지들을 정해진 규격으로 만드는 데에 약간의 시간이 소요되었다. 팀원들 중 몇명은 스크립트를 통한 해결책을 제시하였지만, 그 경우 비율이 제각각일 것을 우려해서 이미지 편집 프로그램을 통해 손수 수정하였다.
카드의 뒷면엔 버튼을 만들어서 뒤집는 기능을 만들었다. 뒤집을 때와 Idle 상태일 때의 애니메이션을 만들었고, 이를 컨트롤하는 컨트롤러를 만들며 프리팹 생성이 끝났다.
오늘까지 만든 스크립트 Card.cs의 내용은 다음과 같다.

public class Card : MonoBehaviour
{
    public int idx = 0;
    public GameObject front;
    public GameObject back;
    public Animator anim;

    public void OpenCard()
    {
        anim.SetBool("isOpen", true);
        front.SetActive(true);
        back.SetActive(false); 
    }

    public SpriteRenderer frontImage;

    public void setting(int number)
    {
        idx = number;
        frontImage.sprite = Resources.Load<Sprite>($"card{idx}");
    }
}
  • idx 변수를 선언하고, 그 변수에 따라 카드에 들어갈 이미지를 앞면에 넣어준다.
  • isOpen 불리언 변수가 true일 때, 앞면을 보여주고, false일 때 뒷면을 보여준다.
  • 기능이 아직 많이 구현되진 않았지만 팀원들과 협업을 하면서 구현할 예정이다.

GitHub 사용

  • 다만 팀원들과 가장 난관을 겪었던 건 바로 GitHub사용에 관한 것이었다. 우리가 겪은 문제 상황은 다음과 같았다.

    • merge 시 기존 파일과 충돌이 일어남.
    • 충돌을 해결했더니 기존 파일이 손상됨.
  • GitHub를 실제 사용하기 전엔 파일을 주고받지 않고도 쉽게 협업할 수 있고, 버전을 올리거나 복구할 때도 쉽게 할 수 있어서 굉장히 간편한 시스템이라고 생각했는데, 실제로 GitHub를 사용해보니, 사용자 간 충돌 문제가 굉장히 빈번하게 일어난다는 사실을 깨달았다.

  • 충돌문제를 해결하기 위한 방법을 구글링해보니, 다음과 같은 해결책을 제시했다.

    • 한 파일을 동시에 편집하지 않도록 역할 분배
      Scene, 프리팹(.prefab), 애니메이션 컨트롤러(.controller) 같은 파일은 충돌이 자주 난다.
      한 사람이 하나의 Scene이나 프리팹을 담당하도록 분리하거나,
      공통으로 쓰는 UI 등은 Prefab Variant나 나누어진 Prefab으로 쪼개서 관리해야 한다.
    • 자주 Pull 받고 Push 전에는 항상 Commit 먼저
      매일 작업 시작 전에는 반드시 git pull하기.
      Push 전에 항상 commit하고 충돌 여부 확인.
    • Unity 에디터 설정에서 "Text 기반 + Force" 저장 설정
      Unity는 기본적으로 Binary 형식으로 저장해서 충돌 해결이 어렵다.
      아래처럼 설정 바꾸면 텍스트 기반 YAML 포맷으로 저장되며, Git 충돌 시 수동 해결이 더 쉬워진다.
      설정 방법:
      Edit > Project Settings > Editor 에서 아래 항목 변경
      Asset Serialization → Force Text
      Version Control → Visible Meta Files
      이렇게 하면 .meta 파일이 생기고, Git에서 파일 추적 및 충돌 해결이 쉬워진다.
  • 내일부터 위 내용을 팀원들과 공유하고, Merge Conflict가 최대한 발생하지 않도록 해야 작업 속도나 효율도 증가할 것 같다.

0개의 댓글