totohoon01.log
로그인
totohoon01.log
로그인
Unity 공부
강상훈
·
2023년 12월 19일
팔로우
0
Unity
0
Unity
목록 보기
11/11
virtual, abstract, interface
virtual
메서드, 속성 등에 선언
자식 클래스에서 메소드 override가 선택 사항이다.
인스턴스 생성 가능
abstract
override 필수
인스턴스화 불가능
interface
다중 상속이 가능하다.
멤버변수 사용 불가
정의 o 구현 x
클래스에 공통적인 기능 추가를 위해 사용
코루틴에 대해 설명해봐라
코루틴을 호출한 스레드를 중단하지 않으면서 비동기적으로 코드 실행
유니티에서 작업을 다수의 프레임에 분할해 실행할 수 있다.
비활성화된 오브젝트에서 실행할 수 없고, 실행 중인 코루틴은 중단된다.
메인스레드에서 실행된다.
StartCourutine 호출 시 GC 발생
코루틴과 invoke의 차이에 대해 설명해봐라
invoke는 Reflection을 통해서 값을 가져오기 때문에 느리다.
오브젝트가 비활성화 상태에서도 동작한다.
Reflection : 객체를 토대로 데이터타입의 메타정보 반환
모바일 게임은 저사양 기기에서 돌아가는것도 중요한데 최적화를 위해 했었던 일들에 대해 설명해봐라
모바일은 만들어본적이 없어서
UGUI의 Scroll View에 썸네일PNG를 넣으면 뚫리는 현상이 있었는데 이를 해결하기 위해서 Texture2d의 Get/SetPixel 사용 -> 병목현상(2중 for문)
코드에서 픽셀 처리를 하지 않고 쉐이더에서 썸네일 알파를 적용하지 않게 변경
프로세스에 대해 설명해봐라
컴퓨터에서 연속적으로 실행되고 있는 프로그램
프로그램의 인스턴스
독립된 메모리영역을 가지고 다른 프로세스에서는 접근 불가
프로세스와 스레드에 대해 설명해봐라
스레드는 한 프로세스 내에서 실행되는 여러 흐름의 단위
프로세스에 할당된 자원을 이용해 로직 처리
각 프로세스는 Stack을 할당받고 Code, Data, Heap 공유
Stack에 있는 정보는 스레드 간 공유가 안된다.
스레드와 코루틴의 차이를 설명해봐라
코루틴은 하나의 작업을 다수의 프레임에 나누어 실행한다.
스레드는 여러 개의 작업을 병렬처리한다.
C# 과 C++의 가장큰 차이는 뭔가
C++은 어셈블리어로 컴파일 / C#은 IL로 컴파일
따라서 C++로 작성된 프로그램은 운영체제에서 바로 실행되고 C#으로 작성한 프로그램은 가상머신에서 실행된다.
C++은 메모리를 직접 할당/해제 해줘야 하고 C#은 GC에서 자동으로 해제해 준다.
GC에 대해 설명해봐라
heap영역의 유효하지 않은 메모리(더 이상 사용하지 않는)를 자동으로 해제해 주는 역할
GC의 오버헤드가 무겁기 때문에 적절한 타이밍에 발생할 수 있게 최적화 필요
GC의 동작 중에는 어플리케이션의 실행이 멈춘다(스파이크).
GC최적화를 위해 할수있는일은 무엇이 있을지 설명해봐라
점진적 GC 사용(GC를 여러 프레임에 나눠서 수행)
씬 전환, UI 오픈 등 특정한 타이밍에 GC를 호출
new()로 Heap영역 할당 횟수를 줄인다 / 오브젝트 풀링 등 재사용 기법
GC의 장점과 단점에 대해 설명해봐라
장점: 개발자가 메모리의 할당/해제를 신경쓰지 않아도 된다
단점: GC는 무거운 작업이기 떄문에 어플리케이션에 렉이 발생할 수 있다.
최적화를 생각해서 만들자.
+++ 추가
12.비동기와 멀티스레드의 차이
비동기: 오래 걸리는 작업이 수행준비가 될 때까지 대기(한 스레드 내에서 실행)
멀티스레드: 프로세스가 여러 개
강상훈
https://totohoon01.tistory.com/
팔로우
이전 포스트
[Unity] 아웃라인 쉐이더
0개의 댓글
댓글 작성