Unity 공부

강상훈·2023년 12월 19일
0

Unity

목록 보기
11/11
post-custom-banner
  1. virtual, abstract, interface

virtual

  • 메서드, 속성 등에 선언
  • 자식 클래스에서 메소드 override가 선택 사항이다.
  • 인스턴스 생성 가능

abstract

  • override 필수
  • 인스턴스화 불가능

interface

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

+++ 추가
12.비동기와 멀티스레드의 차이

  • 비동기: 오래 걸리는 작업이 수행준비가 될 때까지 대기(한 스레드 내에서 실행)
  • 멀티스레드: 프로세스가 여러 개
profile
https://totohoon01.tistory.com/
post-custom-banner

0개의 댓글