본문 바로가기

분류 전체보기155

C# 에서 static GameData 클래스 설계 예시 이번 글에서는 StageData 구조체와 GameData 정적 클래스를 이용해 게임의 스테이지 설정 데이터를 관리하는 코드를 어떻게 구성했는지 설명합니다. 아래 예시 코드를 기준으로 세부 개념을 정리합니다.public struct StageData{ public int ballSpeed; public int blockRow; public int blockColumn; public int blockWidth;}internal static class GameData{ public static StageData[] stageData; public static int StageIndex { get; set; } public static StageData CurrentStag.. 2025. 11. 15.
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.