분류 전체보기100 [Unity] 같은 scene 에서 오브젝트 간 생성 순서 정하기 최종 프로젝트 문제해결 일지 #1 문제 1. 유니티 엔진 - Inspector 창에 text가 들어가지 않는 현상 최근 버전의 유니티는 TextMeshPro 사용을 권장하고 있다. 예전에 UI에서 많이 사용한 일반적인 Text 클래스는 사용에 제약이 있다. 따라서 name space에 using TMPro; 를 사용한 뒤 public TextMeshProUGUI 로 변수를 선언하면 Inspector에서 불러올 수 있다. 문제 2. 같은 scene의 Heirarchy에서 특정 오브젝트를 더 늦게 호출시키는 방법 문제상황) SelectScene에서 넘어온 캐릭터 정보 중 stat 3가지를 gamescene에서 canvas 로 띄우는데, 값이 0으로 출력됨. 시도) 스탯에 연결된 스크립트인 spawnedcha.. 2024. 1. 25. [C#] 자료구조의 차이점 / 제네릭 기술면접 대비하기 #4 9. 배열과 List, ArrayList의 차이점은? (1) 배열 고정된 크기의 요소를 저장 크기는 생성 시점에 결정되며 변경이 불가능 인덱스를 사용해 요소에 직접 접근 가능 다차원 배열도 지원 (2) 리스트 동적으로 크기 조정 가능 요소의 추가, 삭제, 수정이 자유로움 인덱스를 사용해 요소에 직접 액세스 가능 제네릭으로 구현되어 타입의 안정성 보장 단점) 내부적으로 배열을 사용하기 때문에 추가, 삭제 시점에 배열을 다시 할당하고 복사하므로 성능 저하 발생 (3) ArrayList 동적으로 크기 조정 가능 요소의 추가, 삭제, 수정이 자유로움 인덱스 사용해 요소에 직접 액세스 가능 박싱, 언박싱으로 인한 성능 저하가 발생할 수 있음 장점) List는 선언한 자료형에 맞춰 데이터를 .. 2024. 1. 24. [C#] 가비지 컬렉션 / 박싱과 언박싱 기술면접 대비하기 #3 7.가비지 컬렉션이란? 가비지 컬렉션이란 프로그래밍 언어에서 동적으로 할당된 메모리를 관리하기 위한 자동화 메모리 관리 기술이다. 이는 메모리 누수를 방지하고 코드 작성의 편의성과 안정성을 향상시키는데 도움을 준다. 대표적인 가비지 컬렉션의 알고리즘은 다음과 같다. 1) Reference Counting 객체가 참조되는 횟수를 계산해 0이 되면 해당 객체를 해제한다. 2) Mark and Sweep 사용 중인 객체를 마킹하고 마크되지 않은 객체를 메모리에서 해제한다. 3) Generational 객체를 세대별로 나누어 객체 생성 초기에는 메모리 회수 빈도를 높이다가 점점 오래될수록 낮추는 방식. 가비지 컬렉션은 가비지 컬렉터를 이용해 메모리를 관리하는 방법이다. 프로그래머가 직접 .. 2024. 1. 23. [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. 이전 1 ··· 3 4 5 6 7 8 9 ··· 17 다음