아이템 제작 시스템은 게임에 더 많은 선택과 자유도를 부여하며, 캐릭터의 능력을 강화할 수 있고, 게임의 재미와 플레이 시간을 증가시킬 수 있기 때문에 필요합니다. 아이템 제작 시스템을 구현하고 이를 정리하였습니다.
📺 미리보기
💬 목차
- 총 네개의 목차로 구성되어 있습니다.
- 글 별로 아직 언급되지 않은 클래스의 호출이 있을 수 있습니다. 이 사항은 모든 글을 참조하면 충분히 이해할 수 있습니다.
[📌현재 글] 3. [유니티] 제작 시스템(3) - 제작소
📖 구현 내용
- 플레이어의 인벤토리에 있는 아이템을 재료로 하여 아이템을 제작할 수 있습니다.
- 아이템 제작에는 시간이 소요되며 시간을 기다린 후에만 아이템 교환이 이뤄집니다.
- 아이템 제작 시간 도중 창을 닫는경우 아이템 교환은 이뤄지지 않습니다.
- 아이템을 제작중인경우 현재 제작중인 아이템을 또 제작하거나, 다른 아이템을 제작할 수 없습니다.
✅ 구현
- 이번 글에서는 제작 레시피를 가지고 해당 레시피를 이용하여 제작을 할 수 있도록 제작소를 제공하는 기능을 구현합니다.
· CraftingStation.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace CraftingSystem
{
public class CraftingStation : MonoBehaviour
{
[Header("제작 스테이션에서 가능한 조합 레시피들")]
[SerializeField] private CraftingRecipe[] mRecipes;
[Header("글로벌 레시피를 사용하는가?")]
[SerializeField] private bool mIsUseGlobalRecipes = true;
[Header("다이얼로그 창의 타이틀 이름")]
[SerializeField] private string mTitle = "CRAFTING STATION";
public void TryOpenDialog()
{
CraftingManager.Instance.TryOpenDialog(mRecipes, mIsUseGlobalRecipes, mTitle);
}
}
}
[Header("제작 스테이션에서 가능한 조합 레시피들")]
[SerializeField] private CraftingRecipe[] mRecipes;
- 해당 제작소에서 제작이 가능한 레시피들을 등록시킵니다.
[Header("글로벌 레시피를 사용하는가?")]
[SerializeField] private bool mIsUseGlobalRecipes = true;
- 간단한 아이템은 높은 티어의 제작소를 사용하지 않아도 제작할 수 있습니다.
- 이러한 점을 구현하기위해 글로벌 레시피를 사용할 수 있는 기능을 추가로 구현하였습니다.
[Header("다이얼로그 창의 타이틀 이름")]
[SerializeField] private string mTitle = "CRAFTING STATION";
- 제작소 다이얼로그 창을 열었을 때 해당 제작소의 이름을 UI에 표시하기위해 사용합니다.
public void TryOpenDialog()
{
CraftingManager.Instance.TryOpenDialog(mRecipes, mIsUseGlobalRecipes, mTitle);
}
- 제작 다이얼로그 창을 엽니다. CraftingManager에게 호출하여 자신의 레시피와, 글로벌 레시피를 사용하는지, 타이틀이름을 함께 전달하여 창을 열도록 합니다.
- CraftingManager은 다음 글에서 다루겠습니다.
✅ 사용
· 제작소 등록
- 제작소를 사용할 오브젝트에 CraftingStation.cs를 컴포넌트로 포함시키고 내부 멤버변수들을 설정해줍니다.
'unity game modules' 카테고리의 다른 글
[유니티] 상자 시스템(1) - 상자 데이터 (0) | 2023.04.02 |
---|---|
[유니티] 제작 시스템(4) - 매니저 (0) | 2023.04.02 |
[유니티] 제작 시스템(2) - 제작 슬롯 (0) | 2023.04.02 |
[유니티] 제작 시스템(1) - 레시피 (0) | 2023.04.02 |
[유니티] 상점 시스템(3) - 상점 매니저 (0) | 2023.04.02 |