プレイヤーをクエストに送ります。任意の数のクエストを完了して報酬を獲得しましょう。
これは、スクリプト可能オブジェクトに大きく依存して、柔軟なクエストシステムを作成します。
各クエストはその状態を保持し、各クエストは受け入れられたレベルで完了する必要はありません。
したがって、複数のゲームレベルにまたがるクエストを簡単に設計できます。
QuestInventorySO
このスクリプト可能オブジェクトはクエスト オブジェクト (QuestSO) を作成し、インスペクターで変更できるリストに保存します。
新しい QuestSO を作成するには、名前を付けて [Create New Quest] ボタンを押すだけです。
新しい QuestSO は AssetsFolder/Quests/QuestSO フォルダーに配置されます。
削除する場合は、手動で行う必要があります。
QuestInventorySO を作成するには、プロジェクト ウィンドウを右クリックして [Create/FlareEngine/QuestInventorySO] に移動します。
QuestSO
このオブジェクトは、すべてのクエスト情報を保存する役割を担っています。
追加ボタンを押すと、必要な数の報酬が追加されます。
削除ボタンを押すと、保存されたデータが削除されます。
Property | |
---|---|
Title | クエストの名前。 この名前はゲーム全体で一意である必要があります。名前が変更された場合は、リロード ボタンを押してアセット名も更新してください。 |
Goal | プレイヤーが達成しなければならないことの数。これは 1 つ以上の場合があります。 たとえば、プレイヤーに 3 つのレアな宝石を集めるというタスクを与えることができます。 |
Icon | クエストのアイコン。 このスプライトはQuestUIに表示されます。 |
Description | クエストの要件を説明します。 これは QuestUI に表示されます。 |
Property | |
---|---|
Name | 報酬の名前。 |
Reward | 報酬の価値。 |
World Float SO | クエストが完了すると報酬値によって値が増加するワールドフロートへの参照を設定します。 必要ない場合は空のままにできます。 |
Inventory Item | InventorySO と ItemSO への参照を設定します。クエストが完了すると、指定されたアイテムがインベントリに追加されます。 必要ない場合は空のままにできます。 |
Quest
このコンポーネントはシーン内に存在します。このコンポーネントには 2 つの役割があります。
ユーザーがクエストを受け入れると、クエストがアクティブになります。この場合、受け入れメソッドをトリガーできる NPC またはオブジェクトに配置します。
また、クエストの進行状況をチェックします。その場合、収集する必要があるアイテムまたは破壊する必要がある敵に配置します。これらのオブジェクトは進行メソッドをトリガーする必要があります。
クエスト コンポーネントの 2D コライダーが「Is Trigger」に設定されており、プレイヤーが PickUpItems コンポーネントを持っている場合、クエスト アイテムはプレイヤーによって自動的に受け入れられます。
Property | |
---|---|
Quest SO | アクティブ化する必要があるクエストを選択します。 |
Quest UI | クエスト情報を表示する QuestUI への参照。これはオプションです。 |
Add To Journal | アイテムが見つかった場合、シーン内に存在する場合は指定されたジャーナルに追加されます。 |
OnQuestAccepted | クエストが受け入れられたときに呼び出される Unity イベント。 |
OnQuestCompleted | クエストが完了したときに呼び出される Unity イベント。 |
Methods | |
---|---|
OpenQuestWindow() | QuestUI が存在する場合は、それが開かれます。 |
AcceptQuest() | クエストを受け入れるには、このメソッドを呼び出します。これにより OnQuestAccepted が呼び出され、クエストはアクティブであると見なされます。 |
ProgressQuest() | クエストを進めるには、このメソッドを呼び出します。 たとえば、プレイヤーに 3 枚のコインを集めるというタスクが課されている場合、コインが集められるたびにこのメソッドを呼び出す必要があります。このメソッドが呼び出されるたびに、クエストは目標に向かって進み、目標と同じ値になるとクエストが完了します。これにより、OnQuestCompleted が呼び出されます。 |
QuestUIAccepted
クエストのタイトル、説明、報酬を表示します。
すべての UI はオプションで、必要な UI 参照をドラッグ アンド ドロップするだけです。
UI のスタイルとデザインは完全にあなた次第です。
※原文にあやまりがありそうなので調査中(特に見出し)
Property | |
---|---|
Title | クエストの名前を表示する TextMeshPro |
Description | クエストの説明を表示する TextMeshPro。 |
Rewards | アイコン、名前、報酬額、説明を入力します |
QuestUIAccepted
これは QuestUIAccepted と同様に機能します。
この UI クラスは、クエストが完了するとクエストのタイトルとメッセージを表示します。
※原文にあやまりがありそうなので調査中
Property | |
---|---|
Title | クエストの名前を表示する TextMeshPro。 |
Exit Button | このボタンを押すと、UI ウィンドウが閉じます。 |
Time Out | ボタンが存在しない場合は、タイムアウト期間後に UI ウィンドウが自動的に閉じます。 |