일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Generic
- 효과음
- 스택
- invokec#events
- 유한상태머신
- InputManager
- 자료구조
- c#
- BGM
- 배열
- 직렬화
- 스파르타내일배움캠프
- 장애물달리기
- FSM
- inputsystem
- 메서드
- soundmanager
- delegate
- ObjectPool
- UI
- script
- LINQ
- skybox
- 코루틴
- 프로그래머스
- unity
- 인터페이스
- 람다식
- 유니티
- 비선형자료구조
- Today
- Total
목록c# (33)
Unity 개발일지
[확인문제] 1. Tree가 무엇인지 알고 있나요? Tree의 종류에는 어떤 것들이 있나요?더보기Tree는 계층적인 구조를 가지는 데이터 구조로, 노드(Node)와 간선(Edge)으로 이루어져 있다. 루트 노드(Root Node)에서 시작하여 각 노드는 자식 노드(Child Node)를 가질 수 있다. 대표적인 트리의 종류로는 이진 트리(Binary Tree), AVL 트리, 이진 탐색 트리(Binary Search Tree), B 트리, 힙(Heap) 등이 있다. 2. 다음의 트리를 DFS로 방문할 때와 BFS로 방문할 때의 순서가 어떻게 될까요?더보기DFS (Depth-First Search) 순서: 1 -> 2 -> 6 -> 9 -> 3 -> 7 -> 4 -> 8 -> 5BFS (Breadth-Fi..
[확인문제] 1. InvokeRepeating을 통해 반복 실행 중인 메서드는 오브젝트를 비활성화하면 멈출까요?더보기InvokeRepeating은 MonoBehaviour와 연관되어 있기 때문에 오브젝트가 비활성화 되더라도 계속 실행된다.(오브젝트 비활성화는 MonoBehaviour 자체의 기능을 막지 못하기 때문!) 오브젝트 비활성화를 통해 InvokeRepeating 메서드를 멈추고 싶다면 CancelInvoke()를 직접 호출하거나,OnDisable() 콜백 함수를 사용하여 오브젝트 비활성화 시점에 InvokeRepeating을 중단하도록 코드를 작성한다. 2. Coroutine을 통해 반복 실행 중인 메서드는 오브젝트를 비활성화하면 멈출까요?더보기Coroutine은 MonoBehaviour와 연관..
[확인문제] 1. Time.timeScale을 0으로 하면 Update와 FixedUpdate는 모두 호출이 되지 않을까요? 그 이유는 무엇일까요?더보기Update와 FixedUpdate 모두 호출되지 않는다.Time.timeScale은 게임의 시간 흐름을 제어하며, 0으로 설정하면 일반적인 프레임 업데이트가 멈춘다.따라서, Time.timeScale을 0으로 사용하면 게임을 일시정지하거나 특정 이펙트를 구현하는 데 유용할 수 있으나 게임 오브젝트의 로직을 제어하는데 사용해서는 안된다. 로직 제어에는 Start, Awake, OnEnable, OnDisable과 같은 MonoBehaviour 생명주기 메서드를 사용해야한다.2. Update의 호출주기에 영향을 주는 것은 무엇일까요?더보기프레임 레이트Upd..
[확인문제] 1. Queue가 무엇인지 알고있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?더보기FIFO(First In First Out 선입선출) 방식으로 작동하는 자료구조로 다음과 같은 방식으로 작동한다. Enqueue : Queue의 맨 뒤에 데이터를 삽입Dequeue : Queue의 맨 앞에 있는 데이터를 제거하고 반환Peek : Queue의 맨 앞에 있는 데이터를 확인(제거하지 않고 확인만)IsEmpty : Queue가 비어있는지 확인 2. Queue를 직접 구현해본 경험이 있을까요? 없다면 직접 구현해봅시다.클래스 및 주요 멤버 변수data타입: T[] (제네릭 타입 배열)역할: 큐의 요소를 저장하는 배열입니다. 큐의 최대 크기는 이 배열의 크기로 제한됩니다. 배열의 초기 크기는 100..
[확인문제]1. Stack이 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?더보기스택은 LIFO(Last In, First Out 후입선출) 방식으로 동작하는 자료구조로 다음과 같은 방식으로 작동한다.Push : 스택에 데이터를 삽입Pop : 스택의 맨 위에 있는 데이터를 제거하고 반환Peek : 스택의 맨 위에 있는 데이터를 확인한다.(제거하지 않고 확인만)IsEmpty : 스택이 비어있는지 확인한다 2. Stack을 직접 구현해본 경험이 있을까요? 없다면 직접 구현해봅시다. 클래스 및 주요 멤버 변수data타입: T[] (제네릭 타입 배열)역할: 스택의 요소를 저장하는 배열입니다. 스택의 최대 크기는 이 배열의 크기로 제한됩니다. 배열의 초기 크기는 1000으로 설정되어 있습니다..
[확인문제]1. LinkedList가 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?더보기LinkedList는 데이터를 저장하는 선형 자료 구조이다. 배열과는 달리, 데이터를 담고 있는 노드 단위로 구성되어 있으며, 각 노드는 다음 노드를 가리키는 링크 를 가지고 있다.따라서 LinkedList의 노드들은 연결되어있는데, 이로 인해 리스트의 순서를 유지할 수 있다. LinkedList는 '단일 연결 리스트'와 '이중 연결 리스트'로 나눌 수 있다.단일 연결 리스트 : 각 노드는 다음 노드를 가리키는 링크만을 가지고 있다.이중 연결 리스트 : 각 노드는 다음 노드를 가리키는 링크뿐만 아니라, 이전 노드를 가리키는 링크도 가지고 있다. 노드(Node) : 각 노드는 데이터와 다음 노드..
[확인문제] 1. 다음 코드에서 제네릭을 사용한 부분을 식별하고, 해당 코드가 제네릭을 사용하지 않았을 때 발생할 수 있는 문제점에 대해 설명하세요.더보기제네릭을 사용한 부분public class Box{ public T Value { get; set; } public void DisplayValue() { Console.WriteLine($"Value: {Value}"); }} 제네릭을 사용하지 않으면 각 데이터 타입에 대해 별도의 클래스를 작성해야한다.제네릭을 사용하면 코드 재사용성을 높이고, 타입 안전성을 보장할 수 있다.제네릭을 사용하지 않으면 런타임에 잘못된 타입이 사용될 수 있어 오류가 발생할 수 있다. 2. 아래 코드가 어떤 기능을 하는지, 어떤 방식으로 동..
[확인 문제] 1. 위의 코드가 문제가 되는 이유를 메모리 관점에서 설명해주세요.더보기위 코드에서 LogMessages는 문자열 연결 연산('+')을 통해 로그 메시지르 추가한다.String은 불변 객체이므로, 매번 새로운 문자열 객체가 생성되고, 이전 문자열이 가비지 컬렉션 대상이 된다.10,000번의 반복문이 실행되면서 많은 양의 메모리 할당과 해제가 반복적으로 발생하여 성능 저하와 메모리 낭비가 발생한다. 2. 아래와 같이 string이 아닌 StringBuilder가 권장되는 이유는 무엇일까요?더보기StringBuilder는 가변 객체로, 내부 버퍼를 사용하여 문자열을 수정한다.문자열 연결 시 새로운 객체를 생성하지 않고, 기존 버퍼를 재사용하므로 메모리 사용이 효율적이고, 성능이 향상된다. [..