1. 퀘스트 데이타, 스크립트 생성. (구조체)
(상속 기능 필요없음.. 직접 불러서 쓸 것)
- 퀘스트 네임, npc ID(배열) 2가지 변수 생성.
- 구조체 생성을 위한 매개변수 생성자를 작성해주어야 함.
pulbic 퀘스트데이타(퀘스트 네임, npc id)
{
퀘스트네임 = 네임;
npc id = npc;
}
2. 퀘스트 매니저, 스크립트 생성.
- 퀘스트ID 변수 생성.
- Dictionary<int, 퀘스트데이타> 퀘스트리스트(변수명) 생성.
- 데이타 저장 함수 생성.
- 데이타 저장 함수 내부에 Dictionary.Add 로 데이터 저장.
퀘스트리스트.Add(10, new 퀘스트데이타("퀘스트네임", new int []{npc id})
이것을 사용하려면 구조체 생성자를 미리 작성해주어야 함.
- int 퀘스트액션인덱스 변수 및 함수 생성.
(퀘스트 순서를 위해서 필요)
퀘스트ID+퀘스트액션인덱스를 반환(return)해주는 함수.
- 퀘스트의 순서를 체크해주는 함수 생성.
조건문을 통하여.. npc id와 퀘스트리스트에 저장된, 그리고 퀘스트ID에 저장된
퀘스트액션인덱스번째 변수가 같다면.....
퀘스트액션인덱스를 ++ 함.
또한 퀘스트액션인덱스와 퀘스트ID에 저장된 NPCIC의 배열 갯수가 같다면
다음 퀘스트를 진행하는 함수를 호출.
* NextQuest라는 함수를 생성하여 QuestID와 questActionIndex라는 변수를 조정한다.
* ControlObject라는 함수를 생성하여, 퀘스트 진행상황에 따라 Object를 활성화/비활성화 시킨다.
3. 게임매니저
- Public 퀘스트매니저 생성.
퀘스트 ID를 증가시킴( 다음 퀘스트 ID까지)
그리고 퀘스트액션인덱스는 0으로 초기화.
4. 토크매니저
- npc id + 퀘스트 인덱스로 해서 대화를 호출.
* 동전찾아주기 퀘스트.
1. 퀘스트 오브젝트를 관리할 함수 생성.
- 동전 찾아주기 퀘스트라면.. 퀘스트를 받기 전에 동전은 보이지 않아야 함.
퀘스트를 받은 후에 동전이 생겨야함.
(Switch 조건문을 사용하여, 퀘스트ID를 비교.
내가 원하는 퀘스트 ID가 맞다면 오브젝트를 활성화 또는 비활성화 시킴.)
* 예외 처리. (퀘스트 대화를 모두 진행할 필요는 없음...)
- Containskey() : Dictionary에 Key가 존재하는지 검사해주는 함수.
1. 해당 퀘스트 진행 순서 중, 다른 대사가 없을 때
(퀘스트 맨 첫 대사를 가져온다)
if(토크인덱스 == 토크데이타[ID-ID%100].Lengh)
return null;
else
return 토크데이타[id-id%10][토크인덱스];
2. 퀘스트 맨 처음 대사마저 없을 떄.
(기본 대사를 가지고 온다.)
퀘스트번호까지 제거 후 재탐색.
if(토크인덱스 == 토크데이타[ID-ID%100].Lengh)
return null;
else
return 토크데이타[id-id%100][토크인덱스];
★ 반환값이 있는 재귀함수는 꼭 return을 해주어야 함.
* 내가 지금 어떤 퀘스트를 진행하고 있는가??
퀘스트를 진행할 때, 다른 NPC에게 말을 걸었을 때..
★ 함수명이 같아도 여러 개의 함수를 정의 할 수 있다.
왜?? 사용하는 매개변수가 다르기 때문이다.
ex.
public string CheckQuest(ind ID)
{}
public string Check Quest()
함수를 사용하면서 적는 매개변수에 따라 자동으로 관련 함수가 호출됨.
★ 요점
NPC ID, 토크 인덱스...
퀘스트 ID, 퀘스트 인덱스...
이런 숫자들을 잘 조합하는 것.
NPC ID는 1000,2000
토크 인덱스는 1, 2
토크데이타는 1001,1002
퀘스트 ID는 10, 20
NPC 퀘스트 대화는 1010, 1020
이런 숫자를 활용하는 원리.
'개발자가 되어보자..공부공부 > 개발 일지' 카테고리의 다른 글
C# 유니티 공부 13 - 탑다운 게임 완성 (메뉴 버튼 UI, 게임 저장과 불러오기, Canvers Scaler, 안드로이드 빌드) (0) | 2022.12.13 |
---|---|
C# 유니티 공부 12 - 키보드 타자 애니메이션(Typing), UI 대화창, 초상화 애니메이션 (0) | 2022.12.12 |
C# 유니티 공부 10 - 플레이어 대화, NPC 초상화 (Dictionary, 구분자, Split 함수 사용) (0) | 2022.12.09 |
C# 유니티 공부 9 - 2D 탑다운 RPG 예제 (Rule Tile, 플레이어 이동, RayCast 등) (0) | 2022.12.09 |
C# 유니티 공부 8 - 2D 완성 (TileMap, 2D STAGE 전환, 코인 점수 획득, 버튼onclick함수) (0) | 2022.12.08 |
댓글