1. 유니티 프로젝트 협업
다른 사람의 유니티 프로젝트 레포지토리 다운로드 및 작업 방법
- GitHub에서 레포지토리 다운로드
open with Github Desktop: GitHub Desktop에서 레포지토리 복제(Clone)
open with visual studio: 터미널이나 VS Code에서 직접 git clone할 때 사용
Download Zip: 폴더 전체를 압축파일 다운로드, 버전관리 X
- Unity Hub
Add project from disk: 로컬의 프로젝트 수동 등록
Add from repository: 사용 X
팀 프로젝트 끝나면 프로젝트 포크해놓기(포크는 참조가 아닌 복사)
2. 프로그래밍 과정 5단계
주어진 문제와 과제를 이해하고, 해결하기 위해 일반적으로 인지, 분석, 설계, 구현, 검증의 5단계로 나누어 작업한다.
- 인지:
- 구현해야 할 프로그램의 요구사항을 정확하게 인지하고 나열
- 분석
- 인지 단계에서 나열된 정보들에 대한 세부내용을 정리
- 설계
- 이전 단계를 통해 도출된 데이터를 기반으로 '기능의 절차를 단계적'으로 기술
- 구현
- 이전 단계를 통해 도출된 데이터를 기반으로 '기능의 절차를 단계적'으로 기술
- 검증
- 구현된 프로그램과 코드를 구동하고 테스트하고, 디버깅
설계 과정을 거치지 않은 코드의 문제점
- 객체의 의존도가 상승
- 모든 객체가 하나의 객체의 데이터에 의존되는 오브젝트를
갓 오브젝트(God Object)라 칭하며, 중심이 되는 오브젝트의 데이터 수정 시 연결된 다른 모든 오브젝트에 대한 코드를 수정해야 하는 상황이 발생
- 객체의 책임을 생각하지 않은 무분별한 기능추가가 진행됨
- 정확한 설계 없이 프로그래밍을 진행할 경우, 무분별한 기능추가로 인해 단일책임 원칙을 위배할 가능성이 높아지며, 이는 확장기능 추가를 어렵게 함
- 팀원과의 협업이 힘들어짐
- 사전에 약속되지 않은 코드와 객체는 코드의 가독성을 떨어뜨리고, 코드의 작성의도와 의미를 이해하기 위해 많은 시간이 소모됨
3. 클래스 다이어그램
클래스 다이어그램이란 정적인 내용이나 클래스 사이의 관계를 표기하는 다이어그램이다.
클래스 다이어그램 구성:
- 가장 윗부분: 클래스 이름
- 중간 부분: 속성(변수)
- 마지막 부분: 연산(함수)
접근제한자
- public:
+
- private:
-
- protected:
#
classDiagram
class Player1 {
hp
name
Attack()
TakeDamage()
}
class Player2 {
- int hp
- string name
+ void Attack()
+ void TakeDamage()
}
(좌)분석 단계의 클래스 (우) 설계 단계의 클래스
관계:
- 연관 관계(Association):
(A has B) 클래스들이 개념상 서로 연결되었음을 나타냄. 보통은 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일 때 표시
- 의존 관계(Dependency):
(A use B) 연관 관계와 같이 ㅎ한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 나타냄. 차이점은 사용하는 동안 짧은 시간만 유지된다는 점이다.
- 일반화 관계(Generalization):
(A is B) 상속관계, 한 클래스가 다른 클래스를 포함하는 상위 개념일 때
- 실체화 관계(Realization):
(A can B) 인터페이스 관계, 책임들을 실제로 구현한 클래스들 사이의 관계를 나타냄
- 합성 관계(Composition):
클래스들 사이의 전체 또는 부분 같은 관계를 나타낸다. 전체 객체의 라이프타임과 부분 객체의 라이프 타임이 의존적이다.(전체 객체가 사라지면 부분 객체도 사라짐)
- 집약 관계(Aggregation):
클래스들 사이의 전체 또는 부분 같은 관계를 나타낸다. 전체 객체의 라이프타임과 부분 객체의 라이프타임이 독립적이다. (전체 객체가 사라져도 부분 객체는 사라지지 않음)
표현 방법:

이미지 참조: https://en.wikipedia.org/wiki/Class_diagram