2026.02.03 (화) ~ 2026.02.08 (일)
2월 2일에 하던 작업을 마무리 지었다. 지난 주의 목표는 플레이어의 캐릭터를 조작할 수 있는 UI를 만들고, UI와의 상호작용을 통해 턴이 흘러가는 전투를 시각적으로 구현하는 것이었다.
게임의 상태를 관리하기 위해 채택했던 Stack 기반 FSM이 이때 빛을 발했다. UI의 입력에 따라 행동하는 방식이 달라지는데, Stack을 활용해 UI에서 전달한 입력의 종류를 상태마다 따로 처리하도록 해서 쉽게 구현했다.
주중에 대전을 다녀오느라 제작한 내용이 많지 않지만, 목표하던 바는 달성했다.
2026.02.09 (월)
이번 주의 목표는 전투 후 보상을 수령하는 UI와 그 상호작용을 구현하는 것이다. 이것까지 구현하면 던전 안에서의 흐름을 끊김 없이 구현할 수 있게 된다.
..하지만 다른게 하고 싶어져서, 보상 UI 대신에 전투 UI의 부족한 부분을 조금 더 손봤다. 마음이 가는 부분을 하는 것은 어쩔 수 없는 것 같다.
스킬이 사용될 지역을 보여주는 UI를 만들고 싶어서, 스킬 대상의 유형을 나타내는 record를 구현했다. Discriminated Union을 사용해서 스킬 대상 유형을 단일 / 정사각형 / 무작위 등으로 나누고 싶었는데, 이걸 구현하는데 abstract record + sealed record를 사용해 record의 계층 구조를 만들었다.
public abstract record SpellTargetType
{
private SpellTargetType {}
public sealed record Single : SpellTargetType;
public sealed record Square(int Range) : SpellTargetType;
}
그런데 이 코드는 컴파일이 되지 않았다. 놀랍게도 Unity 매뉴얼에 적혀 있는 내용이더라.. record를 Unity에서 제대로 사용하려면, IsExternalInit 타입을 특정 네임스페이스에 선언해야 한다. (https://docs.unity3d.com/6000.3/Documentation/Manual/csharp-compiler.html) 현재 Unity의 LTS 버전인 6.3 버전에선 .NET 버전이 딸려 어쩔 수 없나보다.
'Unity, 게임 개발' 카테고리의 다른 글
| 2026.05.13 (수) - 유물과 전투 연결 구현 (0) | 2026.05.14 |
|---|---|
| 2026.05.06 (수) - 상태 이상 시스템 구현 (0) | 2026.05.07 |
| 2026.02.28 (토) 턴제 애니메이션 구현하기 (0) | 2026.02.28 |
| 2026.02.02 (월) (1) | 2026.02.03 |