Quest Detail View
212
작성한 질문수 3
Quest Detail View는 Tracker랑 다르게 몬스터를 잡으면 퀘스트 진행도가 바로바로 업데이트가 안되고 퀘스트를 클릭 했을 때 업데이트가 되는데 이걸 어떻게 고쳐야 Tracker랑 똑같이 바로바로 업데이트가 될까요?
답변 1
0
수강해주셔서 감사합니다.
방법은 여러가지가 될 수 있습니다만, 실시간 업데이트로 가장 간편한 방법은 역시 이벤트 등록일겁니다.
QuestDetailView의 Show 함수에서 Target = quest;를 해줄 때 Quest의 onTaskSuccessChanged 이벤트 변수에 진행도를 업데이트하는 이벤트를 만들어서 등록해주면 됩니다.
예를 들면 아래와 같습니다.
QuestDetailView.cs
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
public void ShowTasks(Quest quest)
{
int taskIndex = 0;
foreach (var taskGroup in quest.TaskGroups)
{
foreach (var task in taskGroup.Tasks)
{
var poolObject = taskDescriptorPool[taskIndex++];
poolObject.gameObject.SetActive(true);
if (taskGroup.IsComplete)
poolObject.UpdateTextUsingStrikeThrough(task);
else if (taskGroup == quest.CurrentTaskGroup)
poolObject.UpdateText(task);
else
poolObject.UpdateText("● ??????????");
}
}
}
private void OnTaskSuccessChanged(Quest quest, Task task, int currentSuccess, int prevSuccess)
=> ShowTasks(quest);
public void Show(Quest quest)
{
displayGroup.SetActive(true);
if (Target != null)
Target.onTaskSuccessChanged -= OnTaskSuccessChanged;
Target = quest;
Target.onTaskSuccessChanged += OnTaskSuccessChanged;
title.text = quest.DisplayName;
description.text = quest.Description;
ShowTasks(Target);
...
...
...
}
public void Hide()
{
if (Target != null)
Target.onTaskSuccessChanged -= OnTaskSuccessChanged;
Target = null;
displayGroup.SetActive(false);
cancelButton.gameObject.SetActive(false);
}
|
cs |
가이드 정도만 할 목적으로 작성된 코드이기 때문에 최적화할 부분이 많으니 그 부분을 생각해보시면서 코드를 작성해보시면 좋을 것 같습니다.
Task 구현 28:36 Equals 에서 잘 모르는 부분이 있습니다.
0
45
2
Quest System의 확장성에 대한 질문
0
111
1
공부 방향에 대해 궁금한 점이 있습니다.
0
152
2
End()와 Complete() 함수를 따로 구현한 의도
0
179
2
Target의 value에 Object 자료형 관련 질문입니다!
0
158
2
TaskGroupState에 대하여 질문이 있습니다
0
118
2
Elite와 Normal Germ의 IsTarget()질문입니다.
0
109
2
퀘스트 시스템을 확장하면서 생긴 의문점 입니다.
0
181
2
퀘스트 클리어해도 동일 퀘스트가 노출됩니다
1
142
3
퀘스트 누적 클리어 횟수에 대해 여쭤보고싶습니다.
0
93
1
프로퍼티 사용 질문입니다.
0
125
1
Task 에서 Object 타입 사용
0
131
2
파일 저장방식, 퀘스트 실패에 관하여 여쭤보고싶습니다.
0
240
1
Destroy() 지연 파괴에 관하여
0
147
1
Action & Delegate
0
184
2
강의에서 리워드 관련 언급은 없으셔서 질문드립니다.
0
286
1
궁금한게있습니다
0
305
1
스크립터블 오브젝트 Instantiate?
0
448
1
원하는 타이밍에 퀘스트를 등록하고 싶다면 어떻게 해야할까요
0
346
1
Quest Cancel() 메소드
0
273
2
Task의 IsEqual
0
234
1
실전예제 UI 자료
0
205
1
스크립터블 오브젝트
1
337
1
Task 예시
1
179
1





