-
퀘스트를 만드는 것이 이리 힘든건지 몰랐습니다.
퀘스트를 만들다가 적는... 구조
입니다.
퀘스트에서 가장 쉬운 부분은 퀘스트 UI입니다.
그래서 UI 먼저 만들다가 퀘스트랑 UI 연결한 부분까지 완성했는데 순서라던가 방식이 잘못되가지고 연결 끊고 퀘스트 먼저 다시 만드는 중입니다.
이 구조는 퀘스트 뿐만 아니라 다양한 정보를 가지고 있고 그 중에서 한 정보를 불러와서 인게임에 적용하는 모든 GameObject에서 사용할만한 구조입니다.
1. Information(SO)
보통 아이템의 경우 ScriptObject를 사용해서 정보를 가지게 됩니다.
퀘스트의 경우 ScriptObject를 사용하지 않기 때문에 List를 이용해서 퀘스트 제목, 내용, 보상 등을 만들어주었습니다.
public class QuestInfo { public List<QuestType> questTypes = new List<QuestType>(); public List<string> questNames = new List<string>(); public List<string> questDescriptions = new List<string>(); public List<int> questGolds = new List<int>(); }
2. Instant
Information에 있는 정보를 가져와서 적용시키는 부분입니다.
Information을 포함하여 가지고 있어야합니다.
QuestInfo questInfo = new QuestInfo(); public Quest(int index) { questType = questInfo.questTypes[index]; questName = questInfo.questNames[index]; questDescrition = questInfo.questDescriptions[index]; questGold = questInfo.questGolds[index]; questState = QuestClearState.NotAccepted; }
Information은 다양한 정보를 가지고 있는 것
Instant는 다양한 정보 중에서 한개를 선택해서 인게임에 반영될 수 있도록 하는 것
예를 들어서 퀘스트 중에
Information에는 몬스터 처치하기, 아이템 장착하기 퀘스트의 정보가 들어있습니다.
Instant는 둘 중에 한개 몬스터 처치하기를 불러와서 저장해둡니다.
Information은 정보가 저장되어있기 때문에 변경을 하면 안되지만, Instant는 Information에 있는 정보를 가지고 와서 퀘스트 진행도를 측정하기 위해서 몬스터 처치 횟수 등을 변경시킬 수 있습니다.
3. Manager
Instant를 생성하여 다른 인게임 요소와 연결시켜줍니다.
이때, Information도 Manager에 있어야하는데. 이후에 퀘스트의 정보가 필요할 경우를 대비해서 가지고 있다 라고 생각될 수 있습니다.
Manager에서는 Instant와 Information을 List로 관리하고 있는데..
Instant는 이해가 되지만 Information은 잘... 이해가 되지 않습니다.
Information이 SO인 경우에는 List로 관리할 수 있다고 생각됩니다. 그런데 퀘스트에서는 굳이? 라는 느낌이 듭니다..
아직 이해가 덜 된 부분이기도 해서 그런 것 같습니다.
Manager부분은 아직 완성을 못해서..
그리고 추가적으로 Information에서 QuestClear 조건을 추가 해야합니다.
얼른 끝내고 상점도 만들어야하는데...
상점에 넣을 아이템 만들기는 쉬워질 것 같네요..
'TIL' 카테고리의 다른 글
2024.3.5 (1) 2024.03.05 2024.2.28 (0) 2024.02.28 2024.2.26 - UIManager (1) 2024.02.26 2024.2.21 - Json (0) 2024.02.21 2024.2.20 (1) 2024.02.20