UNITY · C# · GAME DEVELOPMENT

유니티공부

반응형

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; ..

자세히 보기 →

Unity 2D - 무기 시스템 (전략 패턴)

thumbnail

현재 개발중인 게임 특성상 Player가 여러 종류의 무기를 사용하고 무기마다 공격 방식이 다르기 때문에 전략 패턴을 활용해 구현했습니다. 전략 패턴을 활용하여 추후 Player의 새로운 무기가 추가되더라도 기존 로직을 크게 수정하지 않고, Class를 추가하는 방식으로 확장할 수 있어 유지보수성과 확장성 측면에서 좋을 것이라고 판단합니다. Player 관련 코드// 각 무기 공격 전략이 따라야 하는 공통 인터페이스public interface IPlayerAttackStrategy{ void Attack(PlayerWeaponController _weaponController, NewWeaponData _weaponData);}// PlayerWeaponController 내 전략 패턴 적용 예..

자세히 보기 →

Unity 3D - 장애물 장판

thumbnail

점프 피하기 게임을 만들면서 화살 장애물을 떨어뜨리기 전에 바닥에 미리 경고 영역(장판)을 보여주는 연출이 필요했습니다.플레이어 입장에서는 어디로 피해야 하는지 알 수 없으면 그냥 맞는 느낌이 들기 때문에, 화살이 떨어지기 전에 "여기 위험해" 라는 시각 신호를 줘야 했습니다.그래서 이번에는 장판 Fill 연출을 담당하는 TrapArea와 이를 실제로 제어하는 Obstacle_Arrow를 나눠서 구현했습니다.1. 전체 흐름전체 구조는 단순합니다.Obstacle_Arrow.Setup() 이 호출되면 비동기로 연출 시작TrapArea.PlayFill() 이 duration 동안 장판을 0 → 1로 채움Fill이 완료되면 화살이 낙하 시작(StartFall())화살이 플레이어와 충돌하면 게임 오버텔레그래프 역..

자세히 보기 →

Unity 3D - 코요테 타임(Coyote Time)과 점프 버퍼(Jump Buffer) 적용

점프 게임을 만들다 보면 분명히 유저 입장에서는 점프를 눌렀다고 생각했는데, 실제로는 입력이 씹히는 경우가 있었습니다.예를 들어 착지 직전에 점프 버튼을 조금 빨리 눌렀는데 아직 지면 판정이 나지 않아 점프가 실행되지 않거나, 반대로 발판 끝에서 점프를 눌렀지만 물리적으로는 이미 공중으로 판정되어 점프가 되지 않는 경우가 있었습니다.이런 상황이 반복되면 유저는 조작이 뻑뻑하다고 느끼게 됩니다.그래서 이번에는 점프 입력을 조금 더 관대하게 처리하기 위해 점프 버퍼와 코요테 타임을 적용했습니다.1. 코요테 타임 / 점프 버퍼 개념먼저 두 기능은 비슷해 보이지만, 실제로는 보정하는 방향이 다릅니다.점프 버퍼(Jump Buffer) 는 점프가 가능한 시점보다 조금 빨리 눌린 입력을 잠깐 저장해두는 기능입니다.예..

자세히 보기 →

Unity 3D - 상점 미리보기 (3D Preview, Render Texture)

thumbnail

위와 같이 상점에서 잠금 상태의 캐릭터나 맵을 실제 3D Object를 보여주는 Preview를 만들고 싶었습니다.왜냐하면 어떤 느낌인지 대략적으로 알 수 있지만 Material을 검정색으로 처리해 호기심을 유발하고 싶었기 때문입니다. Preview를 만들기 위해서 Render Texture를 사용했었는데 Render Texture를 쉽게 말하면 카메라가 렌더링한 결과를 화면이 아니라 텍스처에 저장하는 기능입니다. 보통 카메라는 Game View에 바로 그리지만, 위에 경우에는 previewCamera를 따로 둬서 previewCamera.targetTexture를 미리 생성해둔 Render Texture로 연결해두면 이 카메라가 그린 결과는 Game View가 아니라 연결해둔 Render Texture..

자세히 보기 →
반응형