Skip to content

ClassRabbit/UnityQuestSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UnityQuestSystem

Unity 프로젝트에서 SQLite를 이용해 구현한 퀘스트 시스템 입니다.
UnityQuestSystem을 이용해서 게임의 분기, 오브젝트 온오프 등 다양한 방식을 쉽게 구현할 수 있습니다.

시작하기

요구 사양

  • Unity Editor (2019.3.3f1 or newer)

설치 방법

  1. 기기에 Unity Editor (2019.3.3f1 or newer)를 설치합니다.
  2. Git을 통해 UnityQueestSystem을 하드 드라이브에 클론합니다.
git clone https://github.com/ClassRabbit/UnityQuestSystem  
  1. Unity 에디터로 Unity 프로젝트를 엽니다.
  2. Unity 에디터를 통해 UnityQuestSystem 패키지를 가져옵니다.
Assets -> Import Package -> Custom Package

시스템 구성

구성 요소

  • Quest : 일종의 하나의 값 뜻 하며 기본 값으로 False를 가집니다. 이후 이 Quest가 해결된다면 True값으로 변경됩니다.
  • Swtich : Quest를 이용하여 다단계의 상태를 만들 수 있으며 현재 해결된 Quest 값들로 하나의 상태 결과 값을 가집니다.
  • SwitchController : 추상 클래스로 Switch의 변화를 구독하는 Observer 입니다.
  • QuestManager : Quest가 해결되는 정보를 발행하는 Publisher입니다.

Switch 계산 방식

Switch의 상태 중 계산 결과가 True인 마지막 상태의 상태 결과 값이 적용됩니다.

Ex) Switch [S0001]

Quest가 아무것도 클리어 되지 않은 상황

상태 계산식 계산 결과 상태 결과
기본 - True True (적용)
0 [Q0001] False False
1 [Q0002] & [Q0003] False True

Quest - [Q0001]가 해결 된 상태일때

상태 계산식 계산 결과 상태 결과
기본 - True True
0 [Q0001] True False (적용)
1 [Q0002] & [Q0003] False True

Quest - [Q0001], [Q0002]가 클리어 된 상태일때

상태 계산식 계산 결과 상태 결과
기본 - True True
0 [Q0001] True False (적용)
1 [Q0002] & [Q0003] False True

Quest - [Q0001], [Q0002], [Q0003]가 클리어 된 상태일때

상태 계산식 계산 결과 상태 결과
기본 - True True
0 [Q0001] True False
1 [Q0002] & [Q0003] True True (적용)

Quest - [Q0002], [Q0003]가 클리어 된 상태일때

상태 계산식 계산 결과 상태 결과
기본 - True True
0 [Q0001] False False
1 [Q0002] & [Q0003] True True (적용)

Quest - [Q0003]가 클리어 된 상태일때

상태 계산식 계산 결과 상태 결과
기본 - True True (적용)
0 [Q0001] False False
1 [Q0002] & [Q0003] False True

사용 방법

설정하기

  1. Unity 에디터에서 UnityQuestSystem의 PreferencesWindow를 엽니다.
QuestSystem -> PreferencesWindow

PreferencesWindow

  1. 원하는 데이터베이스명을 입력하고 결정 버튼을 누르면 프로젝트 내로 StreamingAssets 디렉토리에 SQLite 데이터베이스가 생성됩니다.
Assets/StreamingAssets/DatabaseName

Quest 생성하기

  1. Unity 에디터에서 UnityQuestSystem의 EditQuestWindow 엽니다.
QuestSystem -> EditQuestWindow

QuestWindow

  1. QuestId를 입력합니다. (필수)
  2. 설명을 입력합니다. (선택)
  3. 생성 버튼을 누릅니다.

Switch 생성하기

  1. Unity 에디터에서 UnityQuestSystem의 EditSwitchWindow 엽니다.
QuestSystem -> EditSwitchWindow

SwitchWindow

  1. QuestId를 입력합니다. (필수)
  2. 기본 결과를 선택합니다.
  3. 설명을 입력합니다. (선택)
  4. 필요에 따라 추가적인 상태를 생성합니다.
  5. 생성 버튼을 누릅니다.

조회하기

Unity 에디터에서 UnityQuestSystem의 SearchWindow를 통해서 생성된 Quest와 Switch를 조회할 수 있습니다.

QuestSystem -> SearchWindow

SearchQuestWindow

SearchSwitchWindow

게임 구현하기

  1. 추상 클래스 UnityQuestSystem.SwitchController를 상속하여 Switch의 결과 값에 따른 행동을 구현합니다.
  2. 구현한 SwitchController를 컴포넌트로 가진 GameObject를 Scene에 배치합니다.
  3. UnityQuestSystem.SQLiteManager을 이용하여 생성한 SQLite 데이터베이스와 연결되도록 하는 GameObject를 Scene에 배치합니다.
UnityQuestSystem.SQLiteManager.Instance.Connect("DatabaseName");
  1. UnityQuestSystem.QuestManager를 이용하여 Quest를 해결하고 Switch를 업데이트하여 SwitchController를 작동시킵니다.
// 퀘스트 해결
UnityQuestSystem.QuestManager.Instance.ClearQuest("Q0001");
UnityQuestSystem.QuestManager.Instance.ClearQuest("Q0002");
// 해결된 퀘스트에 따라 관련된 Switch를 업데이트
UnityQuestSystem.QuestManager.Instance.Update();

Demo

Assets/Scene/QuestSystem/SampleScene

Demo

  • Quest Menu를 통해서 Quest를 해결할 수 있습니다.
  • Switch Menu를 통해서 Scene에 포함된 Switch의 현재 상태 결과를 확인할 수 있습니다.

Built with

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages