게임 개발 일지92 [C#] 구조체와 클래스 / GC 기술면접 대비하기 #2 4.struct와 class를 비교해서 설명해주세요. Struct와 Class 모두 데이터, 메서드, 프로퍼티 등으로 객체를 정의하는 데 사용한다. Class 는 객체 지향적 프로그래밍을 위해 코드의 다양성, 캡슐화를 지원한다. Struct는 데이터를 그룹화하기 위해 사용한다. 이 때, 구조체는 클래스와 다르게 상속이 불가능하다. 구조적 측면에서의 차이로는, Struct(구조체)는 값 타입이기 때문에 스택에 할당된다. 따라서 구조체가 크면 스택 할당량이 커지므로 주로 간단한 데이터를 작은 규모로 구현할 때 사용한다. Class(클래스)는 참조 타입이기 때문에 힙에 동적으로 할당된다. 따라서 데이터 규모를 확장할 때 용이하다. 또한 클래스의 데이터 (매개변수)는 참조한 다른 객체들에.. 2024. 1. 22. [C#] Coroutine Coroutine (코루틴) 하나의 작업을 다수의 프레임에 분산할 때 사용한다. ex. 텍스트의 색 변환, 인벤토리 창에서 한 칸을 한 프레임마다 보여주고 싶을 때 주로 한 개의 메서드 안에서 특정 값을 재활용해서 오브젝트를 연출하고 싶을 때 사용한다. 함수의 실행을 일시 중지하고 다시 재개하는 방식으로 비동기적인 작업을 수행한다. // 예시코드 1 using UnityEngine; using System.Collections; public class CoroutineExample : MonoBehaviour { IEnumerator Start() { while (true) { Debug.Log("Hello, World!"); yield return new WaitForSeconds(1f); } } } .. 2024. 1. 19. [Unity] Player 행동 구현 방식 (FSM, 블렌드 트리) 팀 프로젝트 회의 Player 행동 구현 어떻게 할 것인가? 팀에서 나온 의견 1) 상태 패턴 (상태 머신 또는 FSM) 사용 2) 엔진 내의 애니메이터 사용 코드 작성과 엔진 자체 해결방법 중 어디에 비중을 더 많이 둘 것인지에 대해 논의했다. 1, 2 번 방법 중 하나만 사용하는 것은 어려워보였다. 왜냐하면 행동에 대한 로직은 코드로 구현해야하고, 각 행동 간 연결은 애니메이터로 연결하는 것이 자연스럽기 때문이다. 상태 패턴은 유니티 게임 개발에서 사용하는 대표적인 패턴인데, 특히 이번에 개발하는 AOS 장르처럼 캐릭터의 행동 변화가 잦은 경우 사용하면 좋다. 상태 패턴은 플레이어의 여러가지 동작을 각각의 객체로 보관하기 때문에 수정/추가/삭제 등이 용이하다. 또한 조건문을 줄임으로써 코드를 간결하게.. 2024. 1. 18. [Unity] Button의 transition Unity _ Button의 transition UI에서 자주 사용하는 오브젝트로 Button이 있다. Button 의 Inspector 창에서 다양한 transition으로 효과를 적용할 수 있다. Normal Color : 버튼의 기본 색 Highlighted Color : 버튼 위에 마우스를 올렸을 때 바뀌는 색 Pressed Color : 버튼을 눌렀을 때 잠깐 바뀌는 색 Selected Color : 버튼을 눌렀을 때 바뀌는 색 (다른 버튼을 누르기 전까지 유지) Disabled Color : 버튼이 비활성화되었을 때 바뀌는 색 활성/비활성 시 아무 효과가 없는 버튼은 밋밋할 수 있으므로 클릭할 때 살짝 어두워졌다가 완전히 눌렀을 때 더 어두운 색으로 유지되도록 설정했다. 유저가 어떤 버튼을 선.. 2024. 1. 17. [Unity] LayerMask, Main Camera의 Z값이 주로 -10인 이유 LayerMask 레이어를 효율적으로 생성/관리 하기 위해 레이어마스크를 활용한다. 최대 32개의 레이어를 활용할 수 있고, 정수형 변수의 각 비트(32비트)를 할당하여 처리한다. 1개의 변수를 여러 개의 bool값처럼 처리하는 방법 (cf. 비트 마스크 : 각 비트를 bool로 보는 관점) LayerMask 메서드 LayerMask.GetMask : LayerName을 넣어서 비트마스크 생성 LayerMask.value : 비트마스크값을 도출 (이진수를 십진수로 변환) LayerMask.NameToLayer(string layerName) : 레이어 이름을 통해 레이어 인덱스를 도출 LayerMask.Contains(int layerIndex) : LayerMask가 특정 레이어 인덱스를 포함하고 있는.. 2024. 1. 16. [CS] float 와 int / ref 와 out / 접근제한자 기술면접 대비하기 #1 1. float와 int의 표현 가능한 수의 범위가 다른 이유는 무엇인가요? key ) 자료형의 내부 구조, 몇 비트를 차지하는지, 메모리 사용 방식 (부호, 지수, 가수 등) 자료형(데이터 타입)이 다르기 때문이다. float는 소수점까지 표현할 수 있는 실수 자료형, int는 소수점이 없는 숫자를 표현할 수 있는 정수 자료형이다. 둘 다 4바이트(32비트)로 크기가 같으나 자료형을 구성하는 bit의 구조가 다른데, int는 부호와 지수까지만 표현하고 float는 부호와 지수에 더해 소수점 이하의 유효자리까지 표시할 수 있다. 따라서 int는 표현 가능한 범위 내의 숫자는 100%의 정확도로 표현하지만 float는 0에서 멀어질수록 정밀도가 떨어지고 유효값을 넘어가는 경우 근사치.. 2024. 1. 15. 이전 1 ··· 3 4 5 6 7 8 9 ··· 16 다음