UNITY · C# · GAME DEVELOPMENT

게임 개발일지_이경현

Unity와 C#을 중심으로 공부한 내용과 직접 구현한 기능, 문제 해결 과정을 정리합니다.

반응형

[CS] ref와 out의 차이점

C#에서 메서드를 호출할 때 인수를 전달하면, 기본적으로 전달한 값이 매개변수에 복사됩니다.따라서 메서드 내부에서 매개변수의 값을 변경하더라도 원본 변수의 값은 변경되지 않습니다. 예를 들어 두 변수의 값을 서로 바꾸는 Swap() 메서드를 작성해 보겠습니다.static void Swap(int a, int b){ int temp = b; b = a; a = temp;}static void Main(){ int x = 1; int y = 2; Swap(x, y); Console.WriteLine($"x = {x}, y = {y}");} 실행 결과x = 1, y = 2Swap() 메서드에서는 a와 b의 값을 서로 교환했지만, 실제 x와 y의 값은 변경되지 않았습니다. ..

자세히 보기 →

[CS] 메서드와 매개변수

프로그램을 작성하다 보면 동일한 코드를 여러 번 사용하거나, 하나의 기능을 처리하기 위해 많은 코드를 작성하는 경우가 있습니다. 이러한 코드를 하나의 기능으로 묶어 필요할 때마다 호출할 수 있도록 만든 것이 메서드(Method)입니다.메서드를 활용하면 중복된 코드를 줄일 수 있고, 기능별로 코드를 분리하여 가독성과 유지보수성을 높일 수 있습니다.메서드란?메서드는 특정 작업을 수행하기 위해 작성한 코드의 묶음입니다.예를 들어 게임이 시작되었을 때 메시지를 출력하는 기능을 만든다고 가정해 보겠습니다.using System;class Program{ static void PrintMessage() { Console.WriteLine("게임 시작"); } static void ..

자세히 보기 →

[Unity 2D] 드래그 이동의 대각선 입력이 직선으로 나뉘던 문제 개선

thumbnail

드래그 이동을 구현한 뒤 방향을 확인하면서 한 가지 문제가 있었다. 플레이어를 오른쪽 위로 끌었는데 의도한 대각선 경로 대신 오른쪽과 위쪽 이동이 번갈아 들어가는 현상이 나타났다. 목적지를 터치해서 BFS로 경로를 만드는 방식에서는 대각선 이동이 정상적으로 나왔고, 문제는 직접 드래그하는 입력에서만 발생했다. 처음에는 대각선 판정값을 조정하면 될 거라고 생각했지만, 실제로는 포인터 입력을 경로로 바꾸는 기준 자체를 수정해야 했다.1. 수정 전후 비교기존에는 대각선 방향으로 드래그할 때도 경로가 → ↑ → ↑처럼 직교 방향으로 분해될 수 있었다. 수정 후에는 현재 Cell 중심에서 포인터가 향하는 방향을 직접 판정하도록 변경했다. 아래부터는 왜 이런 현상이 발생했고 어떻게 코드를 수정했는지 정리했다.2. ..

자세히 보기 →

[Unity2D / TileMap] 캐릭터 Grid 이동 (Pointer Drag)

thumbnail

이전 글에서는 Grid Cell을 터치했을 때 BFS로 목적지까지의 경로를 찾는 방식을 구현했다.2026.09.23 - [Project/Project_P] - [Unity2D / TileMap] 캐릭터 Grid 이동 (BFS) 이번에는 캐릭터를 길게 누르고 직접 끌어서 이동 경로를 만드는 기능을 추가했다. 최종적으로 MovementPlan을 만들어 PlayerMover에 전달한다는 점은 이전과 같다. 차이가 있다면 목적지 하나로 경로를 찾는 것이 아니라, 포인터가 움직이는 방향에 따라 경로를 한 칸씩 추가하거나 되돌린다는 점이다. 이번 글에서는 전체 호출 흐름을 먼저 정리하고, 구현하면서 신경 썼던 cellDelta 변환, UpdateDrag()의 반복문, DragPathBuilder의 경로 수정 과정을..

자세히 보기 →

[CS] Object와 박싱/언박싱

thumbnail

2026.09.22 - [TIL] - CS - 값 형식과 참조 형식 CS - 값 형식과 참조 형식값 형식과 참조 형식은 변수가 어떤 데이터를 담는지에 따라 구분이 됩니다. 그렇다면 앞서 언급했던 변수란 무엇일까요?변수란 코드에서 보자면 값을 대입시켜 변화시킬 수 있는 요소이지만,unitylearn.tistory.com박싱(Boxing)박싱(Boxing)은 값 형식의 데이터를 object와 같은 참조 형식으로 다루기 위해 힙에 객체로 포장하는 과정입니다.위 그림에서는 값 형식인 int의 값 20을 object 형식의 변수에 대입하고 있습니다.겉으로 보면 단순히 20을 obj에 넣는 것처럼 보이지만, 실제로는 int와 object의 저장 방식이 다르기 때문에 별도의 과정이 필요합니다. int는 값 형식(Va..

자세히 보기 →

[Unity2D / TileMap] 캐릭터 Grid 이동 (BFS)

thumbnail

2026.09.23 - [Project/Project_P] - Unity2D - TileMap 캐릭터 Grid 이동 (Input System, GridMap) Unity2D - TileMap 캐릭터 Grid 이동 (Input System, GridMap)플레이어 이동은 Grid를 선택하면 해당 위치까지 이동하는 방식과, 캐릭터를 직접 드래그해서 원하는 경로를 지정하는 방식 두 가지로 구현했습니다. 두 방식 모두 Pointer 입력과 Grid 좌표를 공통unitylearn.tistory.com이전 포스팅에서는 Input System을 통해 Pointer 입력을 받고, 선택한 위치를 TileMap의 Grid Cell로 변환하는 과정까지 정리했습니다. 이번에는 캐릭터가 선택한 Grid까지 이동할 수 있도록 B..

자세히 보기 →

[Unity2D / TileMap] 캐릭터 Grid 이동 (Input System, GridMap)

thumbnail

플레이어 이동은 Grid를 선택하면 해당 위치까지 이동하는 방식과, 캐릭터를 직접 드래그해서 원하는 경로를 지정하는 방식 두 가지로 구현했습니다. 두 방식 모두 Pointer 입력과 Grid 좌표를 공통적으로 사용하기 때문에, 이번 포스팅에서는 먼저 Input System을 이용한 입력 처리와 Grid 좌표 변환 과정을 정리해보겠습니다.1. Input System을 통한 플레이어 입력 받기 Point는 현재 Pointer가 화면의 어디에 있는지 받기 위한 액션으로 PC에서는 마우스 위치가 될 수 있고, 모바일에서는 터치 포인터 위치가 될 수 있습니다.값 자체는 화면 좌표로 받게 되며, 포인터 위치가 변할 때마다 그 값을 그대로 전달받기 위해서 Pass Through를 사용했습니다. Press는 Point..

자세히 보기 →

[CS] 값 형식과 참조 형식

값 형식과 참조 형식은 변수가 어떤 데이터를 담는지에 따라 구분이 됩니다. 그렇다면 앞서 언급했던 변수란 무엇일까요?변수란 코드에서 보자면 값을 대입시켜 변화시킬 수 있는 요소이지만, 메모리 관점에서 보면 '데이터를 담는 일정 크기의 공간'이라는 의미를 갖기도 합니다. 그래서 값 형식은 변수가 값을 담는 데이터 형식이고, 참조 형식은 변수가 값 대신 값이 있는 곳의 위치(주소)를 담는 데이터 형식입니다. 그렇다면 왜 값 형식과 참조 형식을 나눠서 쓰게 된걸까요? 값 형식의 지역 변수는 스택 프레임에서 관리될 수 있습니다. 다만 값 형식이라고 해서 항상 스택에 저장되는 것은 아니며, 여기서는 스택의 동작을 이해하기 위해 지역 변수를 예시로 들어보겠습니다.void Test(){ int a = 1; ..

자세히 보기 →
반응형