하이어라키 창에서 t를 이용한 검색방법
인스펙터 창 복붙하기
커스텀에디터만들기
게임뷰에서 디바이스 시뮬레이터를 사용
로그를 Collapse를 통해 같은종류메시지끼리 모을 수 있다.
프로젝트 세팅에서 Reload Domain and Scene을 Do not으로 바꾸면 게임플레이 모드가 빠르다.
다양한 Static변수나 초기화값을 매번 Reload하지 않는 것.
싱글톤의 경우 문제가 생길 수 있는데, Awake에서 초기화해주는 코드가 있다면 해결가능.
프리퍼런스에서 Colors의 Playmode 색상을 바꿀 수 있다.
라이더
IDE?? 게임개발에 맞춰져있음. 무료화되었다!
코드리팩토링기능
에셋 참조기능
이벤트함수확인
기여자 확인
직렬화 가능여부 표기
호출 빈도 높은 함수 확인
다이어그램그리기
키맵설정을 가져오면 비주얼스튜디오 단축키를 그대로 사용가능
템플릿 생성
선넘은조언 Ctr + . 을 하면 검사중요도를 낮출수있다.
라이더 단축키
LogViewer
라이더 중단점 + 디버깅 시연
유니티 - 프로젝트이름 - Temp - Backupscenes -> 씬 백업정보 저장됨.
디자인 패턴은 무엇인가
객체지향 코드 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 설계 패턴
문제
객체지향 프로그래밍을 설계할 때 -> 다른 사람이 작성한 기존 코드를 파악, 수정, 기능 추가
성능하락, 버그발생 등이 발생할 수 있다. 복잡할 수 록 더더욱
-> 디자인 패턴이 강력한 해결 도구가 될 수 있다. -> 효율적인 커뮤니케이션 수단이다.
ex ) 싱글톤, 옵저버, 팩토리 등으로 만들자! << 직관적, 효율적
개발 중 마주치는 대부분의 문제는 이미 수많은 개발자들이 경험한 문제이므로, 이를 해결책으로 만들어낸
설계 전략이 바로 디자인 패턴이다
아무리 좋은 디자인 패턴이라도 무조건적인 적용은 해가 될 수 있다.
중요한 것은 "패턴을 사용하는 것" 이 아니라 "왜 이 구조(패턴)가 효과적인가" 를 이해하여야한다.
절대적인 해결책이 아닌 반복적으로 나타나는 문제에대한 효과적인 설계관점을 제공하는 방법론이다.
패턴을 도입할때는 "정말 필요한가? 효과적인가?" 를 먼저 고민하고, 코드의 간결성과 명확성을 우선하여야 한다.
프로그램 전체에서 단 하나의 인스턴스만 존재하도록 보장하는 디자인 패턴
=> 무분별하게 쓰면 유지보수성을 해친다. 오디오매니저, 데이터매니저, 풀매니저, UI매니저 등등 객체하나로 유지되어야 할 오브젝트들에 적용
특징 )
전역 접근성, 유일한 인스턴스 보장, 생성자 접근 제한 ( 외부에서 싱글톤객체 생성을 막는다. )
ex )
GameManager, AudioManager, SceneLoader, UserDataManager, PoolManager
조건 )
여러 시스템에서 공통적으로 사용, 상태를 유지, 게임 전체 수명주기동안 살아있음, 유일하게 존재.
인스턴스를 생성할 때, 객체 초기화나 해줘야 할 동작들을 팩토리 라는 클래스에서 전담.
코드가 비대해지는 것을 방지하고 초기 생성의 문제를 팩토리에서만 관리하므로 유지보수 용이
객체를 반복적으로 재사용하고 파괴하는 비용을 줄이기 위해서, 미리 생성해둔 객체를 재사용
오브젝트를 비활성화 두었다가, 필요할때 재활성화 해서 쓰는 구조
기본 구조 )
ObjectPool 풀에서 비활성화 된 오브젝트를 가지고 있다가 필요하면 사용 / 사용 후 반납
반납 은 Queue나 list화 해서 반납
어떤 객체의 상태변화가 생기면 그 객체에 등록된 여러 다른 객체들에게 자동으로 알림을 보내는 설계패턴
플레이어 체력이 깎일 때 -> UI에서 이를 항상 업데이트하기 매우 번거로움.
UI가 플레이어를 항상 감시?? 하는 패턴
객체들 간의 직접적인 상호작용을 막고, 대신 중간에서 조정하는 객체를 두는 구조.
각 상태를 클래스로 캡슐화 => 상태전이 fsm을 만들어낼 수 있다.
상속을 통해 같은 메서드를 사용하여 다른 동작
명령을 객체로 캡슐화하여, 요청을 나중에 실행하거나 취소하거나 로그에 기록