[Memo-Unity] 40. 기술면접(수정)

업데이트:

카테고리:

태그: ,




기술면접 계속추가

기술면접 준비







기술면접 정리

ref out

ref out 매개변수 전달 할 때 사용
out 메서드에서 반환 값을 매개변수로 전달
ref 는 매개변수를 수정해 원래 값에 영향을 주는 경우 사용

구조체 클래스 차이

값 참조, 상속,

제네릭

데이터 형식을 매개변수화하여 일반적인 형식으로 만드는 기능제공합니다.
코드의 재사용성을 높이고 안전성을 보장. where 절로 제약조건을 걸 수 있습니다.

위치

로컬 스페이스 : 오브젝트마다의 위치
월드 스페이스 : 게임 전체 내부적인 위치

박싱과 언박싱

박싱 값형-> 참조형으로
언박싱 박싱된 객체를 값형으로 계산량이 많아 gc가 자주 발생한다.

델리게이트

메서드를 참조하는 객체, 메서드를 변수에 할당하거나 메서드매개변수로 전달할 수 있습니다.

람다

이름이 없는 익명 함수로, 함수의 정의 없이 바로 사용될 수 있습니다.

스택, 힙

스택 : 지역변수 매개변수 값형식 자동으로 메모리 관리
: 스택에 메모리주소 힙에 실질적인 값 스택의 메모리 주소만

객체지향

절차지향과 달리 객체(메서드)들 간의 상호작용을 중심으프로그래밍하는 것
특징으로 캡슐화, 상속, 다형성, 추상화이 있습니다, 또 재사용성과 유지보수성을 향상

오버로딩

같은 이름의메서드를 매개변수의 개수 타입이 다르게

오버라이딩

상위 클래스에서 정의된걸 재정의

추상클래스 인터페이스

다형성을 구현하는 방법이지만 차이점이 있습니다.
추상클래스 추상메서드는 브 클래스에서 반드시 구현(오버라이딩) , 일메서드, 필드, 생성자 등을 포함할 수 있습니다.
다중상속x

인터페이스

함수 선언만 할 수 있다. 인터페이스 안에 선언한 모든 함수인터페이스를 상속하는 클래스에서 반드시 구현

Unity의 생명주기

게임 오브젝트 및 스크립트가 실행되는 과정입니다.
이것은 게임 오브젝트의 초기화, 업데이트, 렌더링 파괴 과정을 포함합니다.
초기화(awke onenable start), 업데이트 (FixedUpdate - update - lateUpdate), 렌더링, 소멸 의 순서로 여러개의 함수가 실행, 반복합니다.

MVC패턴

하나의 프로젝트를 구성할 때 그 구성요소를 세가지로 분류
Model: 데이터베이스. 상수, 초기화값, 변수 등 정보들의 가공을 하는 컴포넌트
View: 사용자가 보는 화면, UI를 보여주는 요소들
Controller: 기능부분, 데이터와 UI를 잇는 역할
MVC 로 나누어서 만들면 서로 분리되어 유지보수, 확장성, 유연성이 증가한다.

업데이트

Update 매 프레임마다 호출되며, 주로 게임 오브젝트의 위치, 회전 등의 변화를 감지하고 업데이트합니다.
FixedUpdate 주로 물리 엔진을 사용하는 게임 오브젝트의 움직임에 사용됩니다.
LateUpdate 모든 Update 함수 호출이 완료된 후 호출됩니다.

드로우콜 배칭

CPU가 GPU에게 그리기 명령을 내릴 때마다 드로우콜이 발생합니다.
많은 드로우콜이 발생하면 성능이 저하됩니다.
오클루전 컬링을 사용한다면 배치가 줄 수 있습니다, 하지만 cpu의 일 이 늘어 날 수 있기 때문에 성능을 확인해보며 하면 좋다고 생각합니다.

컬링 종류

백페이스 프러스텀 오클루전컬링
오클루전컬링 : 가려진 오브젝트들을 감지하여 렌더링 대상에서 제외하는 기술

코루틴

실행 중에 일시정지되어 다른 작업을 처리한 뒤 다시 실행을 이어나갈 수 있습니다. 이 특성으로 비동기 작업을 쉽게 처리하고 복잡한 작업을 단순화할 수 있습니다.

오브젝트 풀링(Object Pooling)

오브젝트를 미리 생성하고 필요할 때마다 재사용하여 성능을 향상시키는 기법.
유니티에서 오브젝트의 생성과 파괴는 cpu에 부담이 가게되어 반복되는 생성과 반복 오브젝트는 오브젝트 풀링을 사용합니다.

유니티 최적화 기법

오브젝트 풀링
거리에따른 랜더링 LOD
불필요한 요소 정리
2D Atlas
스크립트 최적화.

ScriptableObject

변하지 않을 정보를 다루기 위해 사용, 예를 들어, 아이템, 퀘스트, 적의 특성, 레벨 디자인 등
에디터에서 편집이 가능해 직관적입니다.
빌드 후 수정 불가능 단순히 로드하는 정도로만 사용해야한다.

레이어 태그

게임 오브젝트를 식별하고 구분하기 위해 사용하는 기능
레이어 : 렌더링, 충돌, 레이캐스트와 같은 작업에서 사용, 각 오브젝트는 하나 이상의 레이어를 가진다.
태그 : 스크립트에서 특정한 동작을 수행할 때 게임 오브젝트를 식별, 각오브젝트는 하나의 태그

Find 함수 자제

오브젝트의 수가 많으면 성능에 부담어떤 오브젝트를 참조하고 있는지 명확하지 않을 수 있습니다.
디버깅 및 유지보수 유연성 재사용성적으로 좋지않다.

씬로드

SceneManager.LoadScene : 현재 씬을 언로드하고 새로운 씬을 로드
SceneManager.LoadSceneAsync : 진행 상태를 확인하고 이벤트를 처리할 수 있는 기능

Unity의 물리 엔진

Rigidbody컴포넌트 : 물리적인 특성 질량, 중력, 충돌 감지 모드, 힘과 토크, 회전 제한
Collider컴포넌트 : 오브젝트의 형태와 영역을 정의하고, 충돌 감지를 가능 Boxr, Sphere, Capsule, MeshCollider 가 있습니다.

Texture 와 Sprite

Texture 주로 3D모델에 사용되며 Material이나 Shader에 적용되어 모델의 외관을 결정하고 텍스처링을 구현
Sprite 그래픽에 사용되는 이미지

프리팹(Prefab)

게임 오브젝트를 포함된 컴포넌트, 설정 등을 미리 만들어서 재사용 할 수 있도록 저장한 것.
재사용성, 일관성, 효율성의 특징이 있습니다.

디버깅 방식

첫번째 : 비쥬얼스튜디오 유니티와 연결, DEBUG.LOG를 이용해 버그가 발생한 정확한시점, 이유를 : 파악합니다.
두번째 : 정확한 파악이 끝났다면 변수의값? 코드의 순서? 전반적인 문제? 등을 파악합니다.
세번째 : 해결을 위한 생각을 하고 해결을 합니다.
네번째 : 해결을 위한 코드를 최적화 합니다.
마지막 : 테스트를 합니다.

Attribute

에디터를 커스텀하는데 있어 편하게 할 수 있습니다.

SerializeField : 변수를 노출
Serializable : 클래스 구조체 노출
Header : 보기쉽게 분류
Range : 슬라이드 바로 표시
Space : 간격조절
HideInInspector : public 을 숨김
CreateAssetMenu : asset 파일을 만드는 메뉴를 추가 SO 사용할 때
MenuItem : 메뉴바를 추가하는 기능







잡담,정리

Light Camera Occlusion Culling LOD




[Unity] UnityDocs TOP


📔

댓글남기기