본문 바로가기

Unity/Unity2D_TopDown

Unity2D_TopDown - 퀘스트구현(1)

1.퀘스트데이터 스크립트 (string 퀘스트 이름, int[] 퀘스트와 관련된 npc id 배열)

 


2.퀘스트매니저 스크립트(int 퀘스트 아이디 관리)  생성 및 오브젝트 생성



3. 딕셔너리를 만든다 퀘스트id에 대응하는 정보로 퀘스트의 이름 그리고 퀘스트와 관련된 npc들의 id를 가져온다

 

 *하나의 id 정보에 대응하는 정보로 단일 정보를 가져올 수도 배열의 정보를 가져올 수도 있다 
또한 그 이상의 정보를 가져올 수도 있는데 예제와 같이 퀘스트id라는 정보하나로 이에 대응하는
퀘스트이름과, 퀘스트와관련된 npc들의 정보를 가져오고 싶을때 단일정보 + 클래스 생성으로 인스턴스객체를 가져올 수 도 있다
또한 클래스의 필드를 단일자료형 뿐만아니라 배열을 만들 수도 인스턴스객체로 그 배열을 바로 초기화할 수도 있다

 

4. 게임메니져에서 들어오는 (int)npc id 와 (bool)isnpc중 npc id를 인자로 받아 퀘스트 id를 리턴하는 함수 생성

*여기서는 어떤 id가 들어오든 public에서 수동으로 지정한 questid가 들어오지만 나중에 플레이어가 UI에서 questid를 선택하도록 수정할 것임

 

5.해당 퀘스트id를 리턴받아서 기존 npcid를 매개변수로 talk함수를 실행하는 함수에 퀘스트id를 함께 (더하기 방식으로)  게임매니져스크립트로 전송한다 

리펙토링

*50번째 줄의 TalkManigerScript.Talk(id, indexOf)부분도 talkData로 바꿔주고 talkManigerScript에 10번퀘스트의 물체 관련 대화도 만들어 줘야함 그래야 questid가 10일때 일반물체와 대화할때 오류가 안남

바꾸지 않고, 데이터도 없다면 예를 들어 id값이 100인 상자에 대화를 걸었을때 31번째 줄이 먼저 실행되면서  

TalkManigerScript.Talk(100 + 10, 0);이 실행되고 해당 데이터는 없다고 나옴.. 

 

 

6. 퀘스트id가 0이라면 기존의 talk와 관련된 딕셔너리 의 대화창을 불러오지만
퀘스트id를 + 한 경우엔 퀘스트id와 관련된 또다른 talk 딕셔너리를 가져오도록 talk딕셔너리 데이터를 추가한다

 

7.questid를 10으로 수동지정하고 실행 후 npc와 대화를 해보면 대화창이 달라진다

 * 나중에 questid를 수동지정이 아닌 npc로부터 받아올 수 있도록 수정할 예정 그 때를 대비하여 questid와 관련된

  퀘스트이름, 퀘스트관련npc 정보를 QuestManigerScript에 만들어놓은 것임