증거품 UI

This commit is contained in:
2026-07-30 16:26:39 +09:00
parent 519e351fa5
commit 23e93a67f8
127 changed files with 55106 additions and 4 deletions

View File

@@ -0,0 +1,22 @@
using UnityEngine;
// 증거품/아이템 하나 (역전재판의 법정기록 항목).
//
// Id가 곧 "제시 키"다 — 대화 노드의 HiddenBranch.Key와 같은 값을 쓰면,
// 그 노드가 재생되는 동안 증거품창에서 이 아이템을 클릭했을 때 해당 히든 분기가 열린다.
// (DialogTouchZone의 부위 키와 완전히 같은 통로를 쓴다)
[CreateAssetMenu(menuName = "Item/Item Data")]
public class ItemData : ScriptableObject
{
[Tooltip("고유 Id — 저장 파일과 히든 분기 Key에 쓰인다. 비우면 에셋 이름")]
public string Id;
[Tooltip("증거품창에 표시할 이름")]
public string Name;
[Tooltip("증거품창에 표시할 그림")]
public Sprite Icon;
[Tooltip("증거품창에 표시할 설명")]
[TextArea(2, 5)] public string Description;
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 70ed680488473ed44ad380007f918f67

View File

@@ -0,0 +1,25 @@
using System.Collections.Generic;
using UnityEngine;
// 게임에 존재하는 모든 아이템의 목록 (StoryDatabase와 같은 "단일 원본" 역할).
// 저장 파일에는 Id 문자열만 남으므로, Id → ItemData 복원은 이 에셋이 담당한다.
// 게임에 하나만 만들어 ItemHud에 꽂아 쓴다.
[CreateAssetMenu(menuName = "Item/Item Database")]
public class ItemDatabase : ScriptableObject
{
[SerializeField] private List<ItemData> _items = new();
public IReadOnlyList<ItemData> Items => _items;
public ItemData FindById(string id)
{
if (string.IsNullOrEmpty(id)) return null;
foreach (var item in _items)
{
if (item == null) continue;
string itemId = string.IsNullOrEmpty(item.Id) ? item.name : item.Id;
if (itemId == id) return item;
}
return null;
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f6c0a1fdc73b78049aa22e3aa4e84290