Unity 16

[Project_MTS] 개발 일지 - 8 [거점 내 캐릭터 이동 수정, 전투 컨텐츠 추가]

거점 내 이동 기능 폐기거점 내부에서 캐릭터를 WASD로 이동시키고, E 버튼을 통해 표지판과 상호작용하는 기능을 구현했었지만 현재는 모두 폐기한 상태이다. 프로토타입을 개발하는 과정에서 기획 내용이 지속적으로 수정되었고, 점차 전체적인 방향성이 확정되면서 의미가 줄어든 기능들은 정리 및 삭제하게 되었다.또한 추후 이동 가능한 콘텐츠가 추가되더라도, 현재 게임의 구조에서는 직접 키보드로 이동하는 방식이 반드시 필요한 요소는 아니라는 판단을 하게 되었다. 이에 따라 기존 이동 및 상호작용 기능을 제거하고 현재 기획 방향에 맞는 형태로 구조를 단순화하였다.수정된 거점 내 이동 기능기존에는 플레이어 캐릭터를 직접 조작하여 상호작용하는 방식이었지만, 현재는 플레이어가 마우스로 오브젝트나 NPC를 클릭하면 해당 ..

Unity/개발일지 2026.05.29

[Project_MTS] 개발 일지 - 7 [Node기반 맵 생성 R&D 및 UI추가]

맵 생성에 필요한 데이터 추가이 데이터들을 활용해 각 노드들의 타입을 지정할 수 있고, 가중치에 따라 노드들이 설정되며, 슬레이 더 스파이어와 유사하게 최소 레이어 이후부터 등장하는 노드들을 설정하도록 데이터를 추가했다.각 노드들은 MapNodeData를 보유하고 있어 클릭에 따라 각 타입에 맞는 이벤트를 플레이하게 된다. 그리고 전체 맵의 상태를 확인할 수 있도록 스크롤뷰를 활용해 구현했다.ScriptableObject를 활용한 탐색지 데이터 추가현재는 몬스터들의 프리팹과 이벤트 데이터가 없어 공란으로 두었다. 하지만 해당 정보는 Scene 전환 시 함께 전달되며, 이를 기반으로 맵 생성이 시작된다. 이 데이터는 GameManager를 통해 전달하도록 구현했다.GameManager를 통해 데이터를 전달..

Unity/개발일지 2026.05.20

[Project_MTS] 개발 일지 - 6 [Node기반 맵 생성 R&D 및 개선]

Node기반 맵 생성 개선현재는 각 노드들이 다음 Layer중 랜덤하게 하나를 선택해 줄을 잇다보니 연결되지 않았음에도 줄이 연결되며, 줄이 자신으로부터 가까운 위치가 아닌 먼 위치까지 이동하면서 연결되다보니 줄이 꼬이는 이미지가 보이는데, 이를 개선하고자 한다.왜 이렇게 개선하는가?해당 이미지를 보면 각 노드들은 서로 연결되어 있으며, 다음 Layer에서 자신의 위치와 가까운 노드와 연결되는 구조로 동작하고 있다.이를 통해 연결 선이 꼬이지 않고, 모든 노드가 최소 1개의 연결을 가지는 구조가 유지된다는 것을 확인할 수 있다.첫 번째 개선 : 모든 노드는 최소 1개 이상의 다음 Layer 노드와 반드시 연결 모든 노드는 기본 연결을 보장한다. 아직, 마지막 노드는 최소 1개 이상의 노드 연결은 보장하지..

Unity/개발일지 2026.05.14

[Project_MTS] 개발 일지 - 5 [Node기반 맵 생성 R&D 및 구현]

Node기반 맵 생성탐색을 진행할 때 사용될 맵을 우선적으로 개발하기로 했다.2D 그리드 기반의 노드 연결 방식을 선택했고, 참고 게임은 슬레이 더 스파이어이다. 다른 사람들이 구현한 구조와 알고리즘을 참고하며 R&D를 진행하였고, 이를 기반으로 현재 프로젝트에 맞는 형태로 기능을 구현하고자 하였다.Node 데이터 구조 설계먼저 Node형 맵 생성 구조를 구현하기 위해 데이터 구조 설계를 진행하였다.노드의 종류를 관리하기 위한 NodeType 열거형과, 노드의 위치·층(layer)·연결 정보 등을 저장하기 위한 MapNodeData 데이터 클래스를 구현하였다.Node 생성 구조 구현 이후 실질적으로 맵을 생성하게 될 MapGenerator 스크립트를 추가하였다.해당 스크립트에서는 Node형 맵 생성에 ..

Unity/개발일지 2026.05.13

[Project_MTS] 개발 일지 - 4 [시간 데이터 추가, UI 닫기, 채굴 미니게임 조건 추가 및 설계 수정]

시간 시스템 추가플레이어가 행동을 할 때 마다, 시간이 진행되도록 기획했었다. 아침, 점심, 저녁, 밤, 심야로 이루어진 시간을 추가하고 게임의 흐름을 관리하는 GameManager에서 관리하도록 설계했다. 이로인해 채굴 미니게임의 실행 조건이 추가되었고, 하루에 한번만 미니게임을 할 수 있도록 수정되었다. UI 닫기 버튼 추가기존에 UI 기능을 구현할 때 닫는 버튼 추가하지 않았었다. 그래서 간단하게 추가했다. 채굴 미니게임 조건 추가 및 설계 수정기존 채굴 미니게임은 MiningGameController에서 직접 StartGame을 호출하는 구조였다. 하지만 기존에 만들어두었던 PartTimeGameManager에서 아르바이트 게임들을 관리하도록 설계했기에 일부 내용을 수정하였다. Controller..

Unity/개발일지 2026.05.12

[Project_MTS] 개발 일지 - 3 [광산 이동, 광물 데이터 추가, 채굴 미니게임 구현]

광산 이동 광물 데이터 추가이 확률표와 광물 정보에 대한 데이터는 스크립터블오브젝트를 활용해 구현했다. 광물의 등장 확률을 레벨별로 유동적으로 조정할 수 있도록 ProbabilityEntry와 MiningProbabilityData 구조를 설계하였다.ProbabilityEntry는 광물 데이터(MineralData)와 등장 확률을 하나의 데이터로 묶어 관리하기 위해 사용하였으며, 이를 통해 광물 종류와 확률 값을 직관적으로 연결할 수 있도록 구성하였다.MiningProbabilityData는 특정 레벨에서 사용되는 확률 테이블 역할을 담당하도록 설계하였다. 레벨 값과 해당 레벨의 광물 확률 데이터를 함께 관리함으로써, 레벨 상승에 따라 새로운 광물을 해금하거나 등장 확률을 조정할 수 있도록 하였다.이 구..

Unity/개발일지 2026.05.11

[Project_MTS] 개발 일지 - 2 [상호작용을 통한 위치 이동]

상호작용을 이용한 위치 이동세부적인 연출 컨트롤은 조정하지 않고 순수하게 UI를 동한 위치 이동을 구현했다. 맵 전환 시스템 설계 맵 전환 시스템 설계맵 전환 기능을 구현하기 위해 MapController를 구성하고, 마을(Area)과 관련된 데이터는 ScriptableObject를 통해 관리하도록 설계했다.맵 데이터는 Inspector에서의 설정 편의성을 고려해 List로 구성했으며, 마을 데이터가 상황에 따라 추가되거나 제거될 수 있기 때문에 동적으로 관리가 가능한 구조를 선택했다.런타임에서는 Dictionary로 변환하여 사용하도록 구현했다. 이를 통해 AreaData를 기준으로 맵 정보를 키 기반으로 빠르게 조회할 수 있으며, 기존 List 기반 순차 탐색에서 발생하는 비용을 줄이고 O(1)의 시..

Unity/개발일지 2026.05.03

[Project_MTS] 개발 일지 - 1 [플레이어 이동, 오브젝트 상호작용]

기존에 조금씩 생각하던 게임을 개발하고자 했다.그래서 기획을 수정하며 확정된 내용만 기능부터 먼저 개발하며 프로토타이핑을 진행하기로 했다.캐릭터는 Spum을 통해 임시로 만들어 사용했다.플레이어의 이동 구현플레이어의 이동은 입력 처리와 물리 구현을 분리하여 설계했다.Unity의 Update와 FixedUpdate는 호출 주기와 목적이 다르기 때문에 역할을 분리하는 것이 안정적인 이동 구현에 유리하다. Update는 프레임마다 호출되어 입력 처리에 적합하고, FixedUpdate는 일정한 시간 간격으로 호출되어 Rigidbody 기반의 물리 연산에 적합하다.따라서 입력 값은 Update에서 처리하여 상태로 저장하고, 실제 이동과 물리 적용은 FixedUpdate에서 수행하도록 구성했다. 이를 통해 프레임 ..

Unity/개발일지 2026.04.29

유니티 [CreateAssetMenu]

CreateAssetMenu란?[CreateAssetMenu]는 Unity에서 ScriptableObject를 에디터에서 쉽게 생성할 수 있게 해주는 어트리뷰트(Attribute)이다.이를 통해 사용자가 유니티 에디터의 메뉴를 통해 쉽게 새로운 인스턴스를 만들 수 있게 된다.CreateAssetMenu 어트리뷰트(attribute)는 클래스 선언 바로 위에 위치해야 한다.[CreateAssetMenu(fileName = "...", menuName = "...", order = ...)]fileName : 생성되는 에셋의 이름을 결정합니다.menuName : 에셋을 생성하는 메뉴의 이름을 정할 수 있습니다. "/" 를 넣으면 경로가 추가됩니다.order : 메뉴 중에서 몇 번째 위치에 표시될지 정하는 ..

Unity/UnityBasic 2026.04.29

[UnityDocs 정리] 이벤트 함수의 실행 순서

이벤트 함수의 실행 순서이벤트 함수(Event Function)는 MonoBehaviour 클래스를 상속한 스크립트에서 Unity 엔진이 자동으로 호출해주는 콜백 함수(Callback Function) 들을 의미한다.Unity에서 MonoBehaviour는 스크립트가 게임 오브젝트의 생명주기(Life Cycle) 에 맞춰 동작할 수 있도록 다양한 이벤트 함수를 제공한다.이러한 이벤트 함수들은 다음과 같은 상황에서 자동으로 호출된다.스크립트의 생명주기(생성, 활성화, 초기화, 업데이트, 비활성화, 소멸 등)Unity 엔진 시스템의 동작(물리 처리, 렌더링, 입력 처리 등)개발자는 이벤트 함수를 직접 호출하지 않아도 Unity가 정해진 실행 순서에 따라 자동으로 호출해준다.Unity의 MonoBehaviou..

Unity/UnityBasic 2026.04.13