코드 리뷰

Pool

prefab 하나에 Pool하나를 할당

pop으로 풀에서 가져옴

push 풀로 반환, 비활성화

 

pool에서 매번 생성하면 부하가 걸리기 때문에

아예 처음부터(로딩창 등에서) 몇 개 만들어 놓음

 

ObjectManager

객체 타입이 새롭게 나타날때마다 지정을 해주는 방법보다 다른 방법으로 하는 것이 나을 것

 

GetOrAddComponent

컴포넌트가 있으면 가져오고 없으면 만들어 준다

 

IsValid() 함수

-> 유효성 검사

Destroy한 객체를 참조하려고 할 때 문제

 

Reflection, BindEvent -> 공부 필요

 

key값의 형태를 지정 (Skill, SKILL, _skill 등 처럼) 하는 게 좋음

 

버튼은 하나의 역할만 하도록 하는 것이 좋다

이름을 지을 땐 이 기능이 무엇을 하는지 잘 지어야한다.

 

Addressables

지금 구현한 기능은 Addressables 기능 중 일부만 사용한 것

찾아보면 더 많은 기능이 존재

 

Event할당했으면 event 제거가 필요할 때가 있음

중복으로 호출될 수 있고 원하지 않는 event가 들어갈 수 있음

 

Coroutine 객체를 사용해서 저장

StartCoroutine만 사용하면 중복 호출 등의 문제가 생길 가능성이 있음

coroutine을 호출할 때는

Coroutine co;
if(_coAttack == null) 
	_coAttack = StartCoroutine(co));

중복해서 호출되지 않도록 이런식으로 호출

 

is

해당 객체가 이 클래스인지 아닌지 판별 (bool return)

 

enum의 개수

enum num{ONE, TWO, COUNT}

-> COUNT가 enum의 개수

 

 

collision.gameobject.tag == "Enemy"보다  아래 방식이 좋다.

private void OnTriggerEnter2D(Collision2D collision)
{
	if(collision.gameobject.CompareTag("Enemy")){}
}

private void OnCollisionEnter2D(Collision2D collision)
{
	if(collision.gameobject.transform.CompareTag("Enemy")){}
}

 

 

벡터의 크기

Vector2 vec = Vector2.zero;
v.magnitude;	// 이것보다
v.SqrMagnitude;	// 이렇게 쓰는게 좋다

 

magnitude = sqrt(x^2 + y ^2)

SqrMagnitude = x^2 + y^2

연산량을 줄이기 위해 SqrMagnitude를 쓰자

 

 

Localization Tables

다국어 지원

 

 

using UNITY_EDITOR

빌드할 때 포함을 시키지 못함 -> 지워줘야 함

또는 #if UNITY_EDITOR 같이 전처리기를 사용

 

using 제거 및 정렬 기능이 있다.(마우스 오른쪽 클릭)

 

 

package나 데이터세이브 기능 같은 빌드에 중요하지 않는 기능들은 마지막에 추가

 

 

오늘 하루 회고

오늘은 유니티 입문주차 팀프로젝트 발표날이다.

팀원분이 훌륭하게 발표해주셨고 팀과제 칭찬을 받아서 기분이 좋았당

 

오늘 TIL은 발표회가 끝난 후 코드리뷰 시간에 알려주셨던 내용을 정리해봤다.

꿀팁 줍줍