반응형
퀘스트의 데이터를 의미하는 QuestDataSO

퀘스트 안의 작업을 의미하는 TaskDataSO

- Quest Data SO 속성 소개
- Quest ID : 퀘스트 고유의 ID값
- Icon : UI에서 보여지는 이미지 (기획에 따라 삭제 가능)
- Quest Name : 퀘스트 이름
- Quest Description : 퀘스트 설명
- Tasks : 퀘스트안의 작업(TaskDataSO)를 List 형태로 관리
- Reward : 퀘스트 완료 후 받게될 보상
- Item Id : List<int>
- Gold : int
- Exp : int
- Acception Condition : 퀘스트를 진행하기 위한 선행 조건
- Pre Quest Id : List<int>
- Required Item id : List<int>
- Required Level : int
- Use Audo Complete : 자동 완료
- Is Cancelable : 취소가 가능한 퀘스트인지
- Is Savable : 저장이 가능한 퀘스트인지
- Task Data SO 속성 소개
- Task Id : 작업 고유의 ID값
- Task Name : 작업 이름
- Task Description : 작업 설명
- TaskCategory : 작업의 종류 (킬, 아이템 줍기, 대화 등)
- Action Type : 진행도가 오르는 방법
- 몬스터 10마리 사냥 → 진행도 1씩 증가
- 10초 대기하기 → 진행도 1씩 감소
- 10연속 강화 → 강화 성공시 +1, 실패시 초기화
- TargetID : 몬스터의 ID 혹은 NPC의 ID, 아이템의 ID
- success Count : 몬스터 10마리 사냥 → suuccess Count = 10
- Can Receive Reports During Completion : 성공시에도 상태가 바뀔 수 있는지
- 아이템 100개 모으기 퀘스트 → 성공 상태에서 50개를 버린다면 진행중 상태로 변경
사용 방법
void Start()
{
var quest = Managers.Quest.Register(testQuest);
quest.onCompleted += (quest) =>{
Debug.Log("퀘스트에 바인딩");
};
Managers.Quest.onQuestCompleted += (quest) =>{
Debug.Log($"{quest.QuestData.QuestName} 퀘스트 매니저에 바인딩");
};
StartCoroutine(TEST());
}
- 퀘스트 등록 (QuestDataSO를 등록 → 나중에는 id값으로 등록할 수 있도록 확장할 예정)
private IEnumerator TEST()
{
while(true)
{
yield return new WaitForSeconds(1f);
Managers.Quest.ReceiveReport(ETaskCategory.Kill, 13, 1);
}
}
- Managers.Quest.ReceiveReport에 Task의 Category와 TargetId값, 진행도 증가 수를 인자로 보냄

- 결과
반응형
LIST
'Unity' 카테고리의 다른 글
유니티 코루틴의 동작원리 (1) | 2025.05.12 |
---|---|
TIL: Unity 인벤토리 시스템 구현 (2) | 2025.05.01 |
TIL - Addressable 설계 (2) | 2025.04.23 |
계층형 유한 상태 머신 (0) | 2025.04.09 |
State Machine (0) | 2025.04.08 |