본문 바로가기

전체 글120

컬렉션 (Collection) 의 깊이 있는 이해 (feat. IEnumerable, ICollection) C# 에서 List 나 Dictionary 처럼 컬렉션을 다룰 때, 단순히 foreach() 로 순회하는 것 이상으로 이해하고 싶다면 IEnumerable, ICollection 같은 인터페이스 구조를 짚고 넘어가야 합니다.( 참고로 이 글은 interface 개념을 어느 정도 이해하고 있다는 전제하에 작성되었습니다. ) foreach() 는 어떻게 동작할까?다음과 같은 foreach() 문이 있다고 가정해 보겠습니다. Dictionary fruitPrices = new Dictionary(){ { "사과", 1500 }, { "바나나", 1200 }, { "오렌지", 1800 }, { "포도", 2000 }, { "딸기", 3000 }}; foreach (var.. 2025. 7. 24.
Dictionary 정리 : 기초부터 활용까지 프로그래밍을 하다보면, 어떤 키워드에 해당하는 정보를 빠르게 찾아야 할 때가 많습니다.예를 들면, 이름으로 전화번호를 찾거나, 아이템 이름으로 가격을 찾는 상황 등이 있습니다.이럴 때 유용하게 쓰이는 게 바로 Dictionary입니다. Dictionary 란?Dictionary는 말 그대로 "사전" 입니다.Key와 Value를 한 쌍으로 묶어서 데이터를 저장하는 구조입니다.배열이나 리스트는 숫자 인덱스로 값을 찾지만, Dictionary는 key 로 값 (value) 을 바로 찾을 수 있어서 훨씬 직관적입니다. 우리 생활 속 Dictionary• 이름으로 전화번호 찾기 예) 김아무개 : 010-1234-5678• 학번으로 이름 찾기 예) 2025821000 : 홍길동 Dictionar.. 2025. 7. 23.
구조체를 List<T> 에 추가하는 방법들 동일한 구조체를 여러 개 나열할 경우, 구조체 배열을 사용하는 방법도 있겠지만, 여기서는 List를 사용하는 방법에 대해 다뤄보겠습니다. List에 값을 추가할 때는 크게 두 가지 방식이 있습니다.1. Add() 함수를 이용해 데이터를 하나씩 추가하는 방식2. 선언과 동시에 데이터를 중괄호 { } 안에 나열하는 방식그 외에 LINQ를 이용한 방식도 있지만, 여기서는 다루지 않겠습니다.(솔직히 제가 잘 쓰지를 않아서 모릅니다. 😅)어떤 방식이 더 좋다기보다는, 상황에 맞게 또는 선호하는 코드 스타일에 따라 선택하면 됩니다. 대표적인 초기화 방식1. Add() 함수 이용// new 로 List 를 생성List list = new List();// 생성된 list 에 Add() 로 값을 추가.T value .. 2025. 7. 19.
Rigidbody 를 사용하면서, transform 코드가 제대로 동작을 안할 때 Rigidbody 를 추가하고 물체를 움직이다 보면, 내가 작성한 코드랑 별개로 움직이는 느낌을 받게 됩니다. 이것은 유니티가 렌더링용 Transform과 물리 엔진이 다루는 Transform 을 별도로 관리하기 때문입니다. 이번 글에서는 이 둘의 관계와 내부 동작 원리에 대해 설명하고, 직접 이동, 회전시키고 싶을 때 어떻게 처리해야 하는지를 예제와 함께 다뤄보겠습니다. 우리가 흔히 쓰고 있는 Transform (렌더링용)transform.Translate(Vector3.forward * Time.deltaTime);transform.Rotate(Vector3.up * 90f * Time.deltaTime); 이 코드는 일반적으로 잘 동작합니다. 하지만 Rigidbody가 붙어 있으면 다음과 같은 어색.. 2025. 7. 16.
Cinemachine 카메라를 붙였더니 카메라가 말을 안 들어요 Unity 에서 Cinemachin 카메라를 처음 접하신 분들이라면, Main Camera 에 Cinemachine Camera 를 연결하면, main 카메라의 position이나 rotation 값이 변경되지 않아 당황스러울 때가 있습니다. 이번 글에서는 Cinemachine 카메라의 동작 원리와 올바른 설정 순서에 대해 알아보겠습니다. Main 카메라에서 Cinemachine 카메라로 제어권이 넘어감먼저, Main 카메라에 Cinemachine 카메라를 연결하면, 제어권을 Cinemachine 카메라에 넘기기 때문에, 그 때부터는 카메라의 위치나 회전 등은 Cinemachine 카메라에서 조정해 주어야 합니다.Cinemachine 에는 Procedural Components 라는 시스템이 있어서, 카.. 2025. 7. 16.
foreach() 가 내부적으로 동작하는 방식 C#에서 foreach() 문은 아주 간편하게 컬렉션을 순회할 수 있도록 도와주는 문법입니다. 하지만 이 문법 뒤에는 실제로 어떤 일이 일어나는지, 내부적으로 어떤 코드가 실행되는지를 이해하면 C#의 컬렉션 처리 방식에 대해 훨씬 깊은 통찰을 얻을 수 있습니다. foreach 구문의 일반적인 형태string[] fruits = { "apple", "banana", "cherry" };foreach (string fruit in fruits){ Console.WriteLine(fruit);} 위 코드는 fruits 배열의 각 요소를 순회하며 출력합니다. 매우 간단하지만, 내부에서는 꽤 복잡한 일들이 벌어지고 있습니다. foreach의 내부 동작 (while문으로 변환) string[] fruits .. 2025. 7. 15.