일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- jumping ball
- 프레임워크
- 단말기 해상도
- 텍스트 메시 프로
- Tween
- 2D Camera
- DotsTween
- Dots
- AES
- Dynamic Font
- RSA
- C#
- 암호화
- adfit
- Framework
- TextMeshPro
- 샘플
- 최적화
- job
- Job 시스템
- sha
- 다이나믹 폰트
- 커스텀 패키지
- unity
- base64
- 가이드
- ui
- Unity Editor
- Custom Package
- 이미지 폰트
- Today
- Total
EveryDay.DevUp
[Unity] 프로그래밍 패턴 in Unity 본문
Unity 프로젝트 참여 시, 다른 사람에 코드를 보거나 직접 코드를 작성하다보면 잘 짜여진 코드와 보기 어렵고 이해하기 어려운 코드를 볼 수 있는데 그 차이는 코드의 설계에 달려 있다.
개인적으로 잘 짜여진 코드를 정의하면
1. 클래스의 상속 구조가 복잡하지 않은 경우
: 유사한 오브젝트라는 생각에 상속의 상속의 상속으로 클래스를 만드면서 하위 클래스로는 해당 클래스를 이해할 수 없어 상위 클래스를 모두 확인해야 되는 경우가 발생 ex) 캐릭터 > 오크 > 오크 마법사 > 오크 주술사
2. 변수와 함수의 이름이 명확하고 ( 일반적으로 사용되는 단어 ), 하는 일이 간결한 경우
: 자신만이 알 수 있는 줄임말을 변수에 사용하거나 ex) GameManager -> GM
3. 주석이 잘 달려있는 경우
: 코드를 보면 알수 있는 내용까지 주석이 달려있거나, 설명이 긴 경우 가독성이 떨어짐
: 해당 주석을 통해 코드의 주의점, 왜 이런 코드가 들어갔는지에 대한 이유를 적어주는 것이 좋음
: 가장 좋은 코드는 주석없이 누구나 쉽게 이해할 수 있는 코드
4. 같은 코드가 반복되지 않는 경우
: 코드를 작성하다보면 같거나 비슷한 코드가 반복되는 경우가 있는데, 이때 해당 부분을 수정하지 않고 반복된 채로 두면 유지보수 과정에 실수가 생김
5. 읽기 쉽도록 문단, 문장이 정리가 잘된 경우
: if 문 안에서 여러가지의 조건이 한번에 걸려 있는 경우, 긴 문장을 한번에 적는 경우, 하나의 로직이 끝났을 때 줄 바꿈이 없는 경우
잘 짜여진 코드를 만들기 위해서는 기본적으로 프로그래밍 패턴을 이해하고 사용해서 실수를 줄이는 것이 필요
Unity에서 사용한 프로그래밍 패턴을 이해함으로써 Unity 친화적인 코드 작성을 할 수 있음
● 컴포넌트 패턴
: 하나의 컴포넌트는 다른 컴포넌트들과 독립적으로 실행되며, 유기적으로 조합하여 사용할 수 있음
Unity에 기본이 되는 GameObject는 Add Component 를 통해 필요한 컴포넌트를 추가하고 조합하는 구조
▶각각의 컴포넌트는 다른 컴포넌트에 영향을 받지않고 각자의 역할을 하게 됨
▶GameObject는 각각의 컴포넌트를 담는 컨테이너의 역할을 하며 보유한 컴포넌트간의 전달자 역할을 하게 됨
● 게임 루프 & 업데이트 패턴
: Unity는 현재 씬의 GameObject들을 가지고 있으며, 각 실행 타이밍에 맞추어 해당 GameObject의 MonoBehaivor를 실행 시킴
▶ Initalization 초기화 상태라면 GameObject들의 MonoBehaivor의 Awake -> OnEable -> Start 의 순서로 호출
public class Test1 : MonoBehaviour { void Awake() { Debug.LogWarning("Test1 Awake"); } void Start() { Debug.LogWarning("Test1 Start"); } } public class Test2 : MonoBehaviour { void Awake() { Debug.LogWarning("Test2 Awake"); } void Start() { Debug.LogWarning("Test2 Start"); } }
[ GameObject에 Test1, Test2 컴포넌트가 있다고하면, Test1 Awake -> Test2 Awake -> Test1 Start -> Test2 Start 형태로 로그가 출력됨 ]
: MonoBehaivor 는 Unity 엔진에 의해 매 프레임 마다 Update가 호출되어 로직을 수행하게 됨
위의 2가지 패턴이 Unity에 가장 기본이 되는 프로그래밍 패턴으로, C#에서도 다양한 프로그래밍 패턴을 사용하여 코드를 구조화함
'Unity' 카테고리의 다른 글
[Unity] Unity에서 스크립트 우선 순위 설정 (0) | 2020.04.30 |
---|---|
[Unity] Singletone (0) | 2020.04.29 |
[Unity] 해상도에 따른 2D Camera 설정 (0) | 2020.04.26 |
[Unity] Layout 변경 (0) | 2020.04.23 |
[Unity] Unity Hub 2.3.0 (0) | 2020.04.23 |