유니티 공부

노윤수·2023년 6월 8일

유니티 라이프 사이클
awake-> on enable-> start-> fixedUpdate-> Update-> Coroutine-> Late Update-> on disable-> on destroy

싱글턴 패턴
정의: 하나의 클래스에 단 하나의 객체 인스턴스만 가지고 있는 상황

기능: 다른 클래스의 인스턴스들이 데이터를 공유할 수 있다
메모리 낭비를 방지할 수 있다
인스턴스를 생성하는데 필요한 메모리를 줄일 수 있다
단점: 여러 클래스에서 데이터를 사용할 경우 인스턴스간의 의존성이 높아질 수 있다
(객체 지향의 원칙에 벗어남)

최적화
오브젝트 풀링- 메모리를 할당하여 게임 실행시 프레임을 확보하는 방식(활성화/비활성화)

델리게이트
메서드를 대신해서 호출할 수 있음-여러개의 함수를 실행시키는데 용이함-함수를 담을 수 있는 타입(들어갈 수 있는 메서드는 리턴타입, 파라미터의 개수와 타입이 일치해야함)

제너릭

제너릭 컬렉션
제너릭이 성능 문제가 있기 때문에 등장

본인은 포트폴리오에서 제너릭 컬렉션의 딕셔너리를 사용. 흠..굳이 가변 배열일 필요는 없었을 듯하다.

배열과 리스트의 차이
배열은 동적할당 불가능, 리스트는 동적할당이 가능하다. 속해 있는 namespace가 다르며, 실행 속도는 배열이 더 빠르다.

배열과 구조체의 차이
배열은 자료형이 하나로 통일되어 있고, 구조체는 여러가지 자료형을 담을 수 있다.

구조체와 클래스의 차이
구조체는 상속을 할 수 없다 서로 할당되는 영역이 다르다. (클래스-힙, 구조체-스택)

인터페이스와 추상 메서드의 차이
인터페이스-함수에 대한 접근 지정자를 가질 수 없다
상대적으로 느리다
필드를 가질 수 없다
추상메서드-함수에 대한 접근 지정자를 가질 수 있다
상대적으로 빠르다
필드(상수)를 가질 수 있다

메모리 구조
데이터영역-전역변수 정적변수(static)
힙영역-malloc free
스택영역-지역변수 매개변수

객체지향의 4원칙-추상화, 상속, 다형성, 캡슐화
코드의 변형을 용이하게 하며, 반복적인 코드를 줄이고, 간결하게 코드를 표현. 유지보수하는데 유리하다

객체(오브젝트)-모든 실재하는 대상(우리가 보고 느끼는 모든 것)
인스턴스
추상화-사물의 특징이나 공통점을 추려서 표현하는 것
상속-기존의 클래스를 재활용하여 새로운 클래스를 작성하는 것
다형성-어떤 객체의 속성이나 기능이 맥락에 따라서 다른 역할을 수행하는 것(메서드 오버라이딩, 오버로딩)
캡슐화-데이터 보호, 데이터 은닉-필요한 부분만 외부로 노출시킬 수 있도록

profile
코딩조아

0개의 댓글