분류 전체보기(158)
-
Unity 문법 면접 질문 / Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요. / MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요.
질문 : Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요.- 유니티 생명주기는 유니티 자체에서 호출하는 함수이다. 먼저 Awake는 제일 먼저 호출되는 함수이고, Start는 Awake 이후에 호출되는 함수이고, Update는 매 프레임마다 호출되는 함수인거고 FixedUpdate는 물리연산을 처리하는걸로 일정 시간마다 호출하는것이고, LateUpdate는 Update이후에 호출되는 것이고 OnDestroy는 객체가 삭제될 때 호출되는것이다. 질문 : MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요. (MonoBehaviour 클래스에서 Start와 Awake의 차이점은 무엇이며, 이를 적절히 사용하는 방법에 대해 설명해주세요.)- MonoBehavi..
2024.12.23 -
트러블 슈팅 - 직렬화로 인한 자동 객체 생성(아이템 장착한게 없는데 0값이 들어간 이유)
문제인벤토리 아이템을 관리하는 스크립트에서 장착한 아이템이 있으면 밑에 waponInstance와 같은 변수들에 아이템의 값을 넣어주고 장착중인 아이템이 없으면 해당 변수는 null을 갖고있게 하는 코드를 작성했는데 장착한 아이템이 없음에도 불구하고 0번이라는 값이 들어가서 오류를 발생시켰다.위 스크립트에서 아이템이 장착중이면 장착부위에 아이템의 정보가 담긴 아이템셀을 만들어준다. 밑에 함수가 objCell(장착중인 아이템의 정보가 담겨져있는 프리펩)을 해당 위치에 생성해준다.오류 메세지해결밑에 사진을 보면 해당 데이터가 들어가 있지 않은 상태여서 null이여야 하지만 0으로 값이 들어가져있는게 보인다. 그래서 찾아본 결과Unity Editor는 Hierarchy 창에서 게임 객체를 클릭하면 해당 객체의..
2024.12.20 -
면접 질문 /클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요? / 클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요. / 인터페이스란 무엇인가요? / 인터페이스와 추상클래스의 차이는 무엇인가요?
질문 : 클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요?- 클래스를 다른 클래스로 상속하려면 : 연산자를 사용하여 부모 클래스를 지정하면 됩니다./ 상속받는 자식 클래스는 부모 클래스의 멤버(필드, 속성, 메서드)를 사용할 수 있으며, 필요에 따라 멤버를 재정의할 수도 있습니다.질문 : 클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요.- 다이아몬드 문제는 다중 상속 시 두 부모 클래스가 같은 조상 클래스를 상속받고 자식 클래스가 이를 모두 상속받으면서 조상 클래스의 멤버를 호출할 때 어떤 경로로 상속된 멤버인지 모호성이 발생하는 문제로, 이를 해결하기 위해 다중 상속을 금지하고 인터페이스를 통해 문제를 예방하면 됩니다.질문 ..
2024.12.19 -
면접 질문 / 얕은 복사와 깊은 복사의 차이점은 무엇인가요? / 박싱과 언박싱이 일어나는 과정을 메모리 관점에서 설명해주세요. /
질문 : 얕은 복사와 깊은 복사의 차이점은 무엇인가요?- 얕은 복사는 객체의 메모리 주소를 복사해 원본과 복사본이 같은 데이터를 공유하고, 깊은 복사는 객체의 내용 자체를 복사하여 원본과 복사본이 완전히 독립적인 메모리를 갖는다.질문 : 박싱과 언박싱이 일어나는 과정을 메모리 관점에서 설명해주세요.- 박싱은 값 타입 데이터를 힙 메모리에 새롭게 할당하여 참조 타입으로 변환하는 과정입니다. 스택에 있던 값이 힙에 복사되고 참조가 반환됩니다. 반대로 언박싱은 힙에 있는 참조 타입 데이터를 스택으로 복사하여 값 타입으로 변환합니다. 이 과정에서 힙 메모리 접근과 데이터 복사가 발생하여 성능 오버헤드가 생길 수 있습니다. 이를 최적화하기 위해 제네릭과 같은 방법을 사용하면 박싱과 언박싱을 회피할 수 있습니다. ..
2024.12.18 -
스프라이트 아틀라스 심화버전 (이미지 픽셀 최대한 줄여서 사용하기)및 아틀라스 매니저 작성
아틀라스 심화버전이미지 해상도를 크게하면 리소스 로드할때 성능을 잡아먹기 떄문에 최대한으로 줄여서 사용해야 한다. 이미지의 픽셀 수가 많을수록 고해상도 이미지가 되지만, 성능 비용이 증가하므로 게임의 최적화를 위해 적절한 해상도를 설정하는 것이 중요하다. 해상도는 픽셀 단위로 측정이 되기때문에 이미지의 픽셀을 낮추면 자연스럽게 해상도가 낮아진다.또한 아틀라스를 사용해서 이미지를 관리하면 2의 제곱수로 꼭 나눌 필요가 없다.2의 제곱수 제한이 존재하는 이유 - 텍스처 메모리는 GPU가 효율적으로 관리하기 위해 2의 제곱수(예: 128x128, 256x256, 512x512 등)로 텍스처를 할당하려고 한다. 그렇기 때문에 2의 제곱수가 아닌 크기의 텍스처를 사용하면 GPU가 해당 텍스처를 2의 제곱수에 맞게..
2024.12.17 -
Scroll View 만들기
UI 에서 Scroll View 만들기우클릭을 통해 Scroll View를 생성그러면 밑에 사진과 같이 자식들이 붙어져서 나오는데 여기서 세로로 스크롤을 내릴지 가로로 내릴지 정해야 하는데 나는 세로로 내릴거여서 Scrollbar Horizontal를 지웠고, 나는 스크롤바를 잡고 내릴게 아니여서 Scrollbar Vertical도 지워줬다. 그러고 나서 Scroll View의 크기를 정해준 뒤에 Scroll View오브젝트에 붙어여있는 Scroll Rect컴퍼넌트의 설정을 손좀 봐야한다.Scroll View에 있는 Scroll Rect컴퍼넌트의 설정1. 스크롤을 세로로 내릴거면 Horizontal을 꺼줘야하고, 스크롤을 가로로 밀거면 Vertical을 꺼줘야한다.2. Movement Type을 Elas..
2024.12.16