본문 바로가기

전체 글142

Data 관리 클래스를 static 으로 만들어야 하는 이유 1. 초기 구조의 한계처음에는 다음과 같이 게임 규칙과 로직이 모두 MainForm 안에 포함되어 있었습니다.public partial class MainForm : Form{ int stageIndex = 0; StageData[] stageData = new StageData[3]; int ballSpeedX = 7; int ballSpeedY = 7; int blockRow = 3; int blockColumn = 5; int blockWidth = 100;} 이 구조에서는 다음과 같은 문제가 발생합니다.스테이지 데이터와 게임 로직이 섞여 있어 가독성이 저하됩니다.Stage 관련 정보를 수정하려면 반드시 MainForm 내부를 수정해야 합니다.다른 화면(Form.. 2025. 11. 15.
Unity의 FixedUpdate, Update, LateUpdate 완전 이해 1. 세 가지 함수의 역할 * FixedUpdate() - 물리 연산 루프 (Time.fixedDeltaTime 간격) Rigidbody 이동, AddForce, 충돌 계산 * Update() - 프레임 루프 (모니터 주사율 기준) 입력 처리, 일반 Transform 이동 * LateUpdate() - 렌더 직전 카메라 추적, 후처리, 위치 보정 2. 실행 순서 요약FixedUpdate (0~N회) → Update → LateUpdate → RenderUnity는 물리 루프(FixedUpdate) 와 그래픽 루프(Update) 를 분리해서 서로 다른 속도로 독립적으로 실행합니다. * FixedUpdate() : 일정한 물리 시간 단위로 반복 * Update() : 프레임마다 한 번씩 * L.. 2025. 10. 31.
Cinemachine Camera : Dead Zone, Hard Limits, Damping Unity를 사용하다 보면 Inspector 창에 작게 붙어 있는 ‘?’ 마크를 본 적이 있을 겁니다.평소엔 무심코 지나치기 쉬운 이 아이콘, 사실은 Unity 공식 매뉴얼 페이지로 바로 연결되는 기능입니다. 최근에 저는 Cinemachine Camera 의 Position Control 설정을 확인하던 중, ? 버튼을 눌러봤더니 해당 항목의 공식 문서가 브라우저에 바로 열리는 것을 확인했습니다. 덕분에 번거롭게 검색하지 않고도, 정확한 설명을 빠르게 확인할 수 있었습니다. Position Control : Position Composer Position Control 은 Tracking Target (추적 대상) 을 화면에서 어떤 위치에 둘 것인지 결정하는 기능입니다. 여기에는 여러 가지 선택할 수 .. 2025. 7. 27.
Dictionary 에서 구조체를 TValue 로 사용시, 주의할 점 구조체는 스택 메모리에 생성되기 때문에 값 복사가 일어납니다. 그리고 이로 인해 몇 가지 주의해야 할 점이 있는데, Dictionary 에서는 이 부분이 특히 더 민감하게 작동합니다. 이번 글에서는 이와 관련해서 자세히 설명해 보겠습니다. 구조체는 값 복사다음과 같은 코드가 있다고 가정해 보겠습니다. 그리고 "쌍검" 의 수량을 +1 증가하는 코드를 작성해 보려고 합니다. struct Item{ public string name; public string desc; public int price; public int quantity; public float weight;}// Dictionary 선언Dictionary itemTable = new Dictionary();/.. 2025. 7. 24.
컬렉션 (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.