ScriptableObject
- 유니티에서 제공하는 데이터 컨테이너로 게임에서 사용되는 데이터를 게임 리소스에 미리 저장하여 사용할 수 있다.
ScritableObjetct를 사용하려면 먼저 C# 스크립트에서 클래스를 선언해야 한다.
// "Assets > Create" 메뉴에서 "New Item"으로 표시됨
// 새 ScriptableObject를 생성하면 기본 파일명은 "Item"이 됨
// 코드에서 직접 생성할 경우 매개변수 없이 사용 가능, ()생략
[CreateAssetMenu(fileName = "Item", menuName = "New Item")]
// ScriptableObject를 상속받아 데이터 클래스로 사용
public class ItemData : ScriptableObject
{
}
이렇게 하면 Project(Asset) 쪽에서 스크립터블 오브젝트 생성이 가능해진다.
ScriptableObject를 이용하여 ItemData를 만들어보자,
// 아이템 타입
public enum ItemType
{
Equipable,
Consumable,
Resource
}
// 소모품 타입(스탯)
public enum ConsumableType
{
Health,
Hunger,
Stamina
}
// 소모품에 들어갈 일시적으로 올려줄 스탯 타입
public enum TimeConsumableType
{
Speed,
Jump
}
// 자원 타입, 값
[Serializable]
public class ItemDataConsumable
{
public ConsumableType type;
public float value;
}
// 자원 타입, 값 / 지속시간
[Serializable]
public class ItemTimeConsumableType
{
public TimeConsumableType type;
public float value;
public float duration;
}
[CreateAssetMenu(fileName = "Item", menuName = "New Item")]
public class ItemData : ScriptableObject
{
[Header("Info")]
public string displayName;
public string description;
public ItemType type;
public Sprite icon;
public GameObject dropPrefab;
// 아이템을 중복으로 얻을 수 있는지와 최대갯수
[Header("Stacking")]
public bool canStack;
public int maxStackAmount;
[Header("Consumable")]
public ItemDataConsumable[] consumables;
public ItemTimeConsumableType[] timeconsumable;
// 장비
[Header("Equip")]
public GameObject equipPrefab;
}
아이템 타입은 총 세가지, 장비/소모품/자원 세개로 분류해두었으며 각각
장비에는 장착기능과 자원채집이 가능한 기능을 추가,
소모품은 사용하면 설정된 값만큼 스탯이 회복되거나 일부 스탯이 잠시 올라가는 형식으로,
자원은 나뭇가지와 같은 자원에서 얻을 수 있는 일반 자원으로 두었다.
CanStack은 체크해주어야 한개의 아이템에 갯수만 쌓이는 형식으로 인벤토리에 들어간다.
장비를 제외한 아이템을 모두 체크해주었으며 최대로 획득 가능한 갯수는 12개로 해주었다.
위와같이 적용해주면 아이템 생성 끝!
가까이 가면 아이템과 설명이 나오며 e키 입력 시 획득,
장비는 장착 / 자원은 사용 혹은 사용불가 시 버튼이 나타나지 않게 해주었다.
'Unity > Unity Study' 카테고리의 다른 글
[Unity] 3D Surviver 팀 프로젝트 중, 다른 타입으로 발생한 null (0) | 2025.03.14 |
---|---|
[Unity] 개인 프로젝트 중, 자원 획득 및 오브젝트 파괴 (0) | 2025.03.13 |
[Unity] 개인 프로젝트 중, 키 입력 시 이미지 띄우기 (0) | 2025.03.11 |
[Unity] 쿠키런 모작 팀 프로젝트 중, Map 제작 (0) | 2025.03.04 |
[Unity] 쿠키런 모작 팀 프로젝트 중, Item 3 - PlayerPrefs를 이용한 저장기능 추가 (0) | 2025.02.28 |