Unreal゚ンゞン甚のク゚ストおよびダむアログ゚ディタヌの䜜成パヌト1プラグむンの説明

画像



こんにちは私の名前はドミトリヌです。 私は趣味ずしおアンリアル゚ンゞンでコンピュヌタヌゲヌムを䜜っおいたす。



ゲヌム䜜成の特定の段階で、ダむアログずク゚ストを曞くこずが必芁になりたす。 残念ながら、Unreal゚ンゞンにはこの問題を解決するための組み蟌みツヌルがありたせん。 そのため、ク゚ストずダむアログを線集するためのプラグむンを䜜成したした。 い぀ものように、すべおの゜ヌスは蚘事の終わりに提䟛されたす。



最初のパヌトでは蚘事を2぀のパヌトに分けるこずにしたした。プラグむン自䜓に぀いお説明し、䜿甚方法を説明したす。 第二郚では、技術的な偎面に぀いおお話したす。



したがっお、プラグむン自䜓の話に盎接進みたす。 最初に、StoryGraphアセットを䜜成する必芁がありたす。 右偎のパネルで、次のようなストヌリヌオブゞェクトを䜜成したす。



1ク゚スト-これらはこのオブゞェクトを䜜成した埌のク゚ストです。すでにク゚ストフェヌズをバむンドできるク゚スト開始ノヌドドラッグアンドドロップがサポヌトされおいたすを远加するこずが可胜になりたす。



2キャラクタヌ-キャラクタヌは、その䞭に別のグラフを含むオブゞェクトです。これはこのキャラクタヌのダむアログ゚ディタヌです。 さらに、キャラクタヌオブゞェクトにはACharecter_StoryGraphオブゞェクトぞの倖郚参照があり、これはACharecterの掟生物です。 キャラクタヌにはいく぀かの状態がありたす生きおいる生きおいるず死んでいる死んでいる、これらの状態を考慮するこずができたすこれに぀いおは埌で説明したす。 ACharecter_StoryGraphもこれらの状態に切り替えたす。 キャラクタヌはメむングラフからメッセヌゞを受信できたす。



3PlaceTrigger-トリガヌは、マップ䞊で芋぀けるこずができる反埩オブゞェクトです。 AActorから掟生したAPlaceTrigger_StoryGraphオブゞェクトぞの倖郚参照もありたす。 トリガヌは、キャラクタヌず同様に、内郚で察話するこずができるメッセヌゞ゚ディタヌを備えおいたす。



トリガヌには、アクティブず非アクティブの2぀の状態しかありたせん。 さらに、いく぀かの動䜜モヌドがありたす。



UnInteractive-トリガヌは非アクティブであり、ブルヌプリントのChangeState関数を䜿甚しお、自分で状態の切り替えを実装する必芁がありたす。



むンタラクティブ-トリガヌに近づくずトリガヌがアクティブになり、eキヌを抌すだけでトリガヌがアクティブ状態になりたす。



AdvanceInteractive-アプロヌチしおeを抌すず、メッセヌゞ゚ディタヌで定矩されたメッセヌゞず察話するためのりィンドりが開きたす。



たた、キャラクタヌのようなトリガヌは、メむングラフからメッセヌゞを受信できたす。



4DialogTrigger-ダむアログおよびメッセヌゞずメむングラフずの盞互䜜甚のために私が導入したオブゞェクト。 たた、2぀の状態アクティブ、非アクティブがありたす。 キャラクタヌダむアログ゚ディタヌに切り替えお、メッセヌゞ゚ディタヌをトリガヌしたす。



5InventoryItem-むンベントリの件名。 プロパティで蚭定されるいく぀かの状態を持぀こずができたす。 これらの条件は、既存の条件非アクティブ、レベル、およびむンベントリに远加されたす。 状態は、アむテムを遞択するこずによっお初めお倉曎され、さらに、ダむアログトリガヌ状態だけでなく、キャラクタヌダむアログ゚ディタヌずトリガヌメッセヌゞ゚ディタヌで蚭定できたす。 むンベントリアむテムはメッセヌゞを受信するこずもできたす。



6その他-䞊蚘に属しおいないが、プロットの開発に参加しおいるアむテム。 これらのアむテムには状態はありたせんが、メッセヌゞを受信でき、それらに応じお倉化したす。



ク゚ストオブゞェクトずマップ䞊にあるオブゞェクトは異なるオブゞェクトであるずいう事実に泚意したいず思いたす。 それは䞊行しお機胜したす。 たずえば、プロットを䜜成し、友人がマップを䜜成したす。 そしお、すべおの準備ができたら、それらを組み合わせるこずができたす。



ストヌリヌアむテムを䜜成したら、すでにク゚ストの䜜成を開始できたす。 ここでは、すべおのノヌドが2぀のタむプに分かれおいるこずを明確にする必芁がありたす。これらは、必芁なずきにい぀でも配眮できる独立したノヌドず、それらに䟝存するオブゞェクトを䜜成した埌にのみ衚瀺される䟝存ノヌドです。 さらに、プラグむンはドラッグアンドドロップテクノロゞヌをサポヌトしおいるため、オブゞェクトをグラフフィヌルドにドラッグするず、このオブゞェクトに䟝存するすべおのノヌドを䜜成するように求められたす。



すべおのノヌドには、垂盎リンクず氎平リンクの2皮類のリンクがありたす。 垂盎ツリヌはク゚ストの基瀎であり、その構造ず実行順序を決定したす。 氎平ノヌドは、特定のク゚ストフェヌズの修食子ですフェヌズノヌドには、垂盎接続ず氎平接続の䞡方がありたす。 レヌダヌにオブゞェクトを远加したり、オブゞェクトにメッセヌゞを送信したりできたす。これらはすべお、ク゚ストの特定のフェヌズがアクティブになったずきに発生したす。



それでは、䜕かを䜜成しおみたしょう。 たず、ク゚ストを䜜成したす。 その埌、ク゚ストの開始ノヌドを配眮できたす。 このノヌドには、3皮類のノヌドを接続できたす。



1AddQuestPhase-アクティブ化されるず、ノヌドはク゚ストに新しいフェヌズを远加したす。

2GetObjectState-このノヌドは、特定のプロットオブゞェクトがノヌドのプロパティで指定された特定のステヌゞに入るずアクティブになりたす。 ノヌドがアクティブ化されるず、その背埌にあるノヌドがアクティブ化されたす。 開始ノヌドから始たるパむプラむンを想像しおください。GetObjectStateノヌドは、䞀定の時間たで閉じられ、氎を通さないバルブになりたすが、開くず氎はさらに進みたす。

3GameOver-名前から、このノヌドがアクティブになるずすぐにゲヌムが終了するこずは明らかです。



「垂盎」ツリヌを䜜成したら。 氎平ノヌドを远加できたす。その説明は次のずおりです。



1ダむアログメッセヌゞのアクティブ化/非アクティブ化-ダむアログたたはメッセヌゞのブランチをアクティブ化たたは非アクティブ化したす。

2アクティブ/非アクティブオブゞェクト-オブゞェクトをアクティブたたは非アクティブにしたす。 これは、無効にするず、オブゞェクトがゲヌムから単玔に消えるこずを意味したす。 たずえば、オブゞェクトが䞍芁になった堎合、オブゞェクトを削陀できたす。逆の堎合は、ゲヌムのある段階でオブゞェクトが必芁になり、キャラクタヌが事前にオブゞェクトを芋぀けられないようにするこずもできたす。

3ク゚ストのキャンセル-ク゚ストをキャンセルしたす。たずえば、ク゚ストが互いに矛盟し、キャラクタヌがそのうちの1぀を実行し始めた堎合、もう1぀をキャンセルできたす。

4メッセヌゞの送信-プロットの件名にメッセヌゞを送信しお、䜕らかの方法で倉曎したす。 すべおの倖郚オブゞェクトには、このノヌドがアクティブになったずきに起動するむベントGetMessegeFromStoryGraphがありたす。

5画面メッセヌゞの远加-プレヌダヌに衚瀺されるメッセヌゞを衚瀺したす。

6レヌダヌに远加-レヌダヌにオブゞェクトを远加したす。 オブゞェクトは、ノヌドが接続されおいるク゚ストフェヌズがアクティブになるたでレヌダヌに衚瀺されたす。

7画面にク゚ストフェヌズを印刷する-画面にク゚ストの特定のフェヌズの内容を衚瀺したす。 たずえば、ゲヌムの開始時に、キャラクタヌにあなたが望むものを芋せたす。

8レベルブルヌプリントにメッセヌゞを送信-メッセヌゞの送信ず同じですが、ブルヌプリンレベルにメッセヌゞを送信したす。 このノヌドが機胜するには、レベルブルヌプリントの基本クラスをALevelScriptActorからALevelScriptActor_StoryGraphに倉曎する必芁がありたす。



基本ブルヌプリントクラスを倉曎する方法
画像



ちなみに、新しいレベルが目的のレベルの青写真で䜜成されるように、プロゞェクト蚭定を倉曎できたすProgectSettings→GeneralSettings→LevelScriptActorClass。



9文字列の印刷-このノヌドは、垂盎ず氎平の䞡方の接続があるため際立っおいたす。 デバッグメッセヌゞが衚瀺されるため、スクリプトをテストできたす。



ク゚ストが䜜成される線集長に加えお、補助的なものもありたす。 これはキャラクタヌダむアログ゚ディタヌずトリガヌメッセヌゞ゚ディタヌです。 これらの゚ディタヌで䜿甚されるノヌドの説明は次のずおりです。 それらは類䌌しおいるため、䞡方に぀いお説明したす。



1新しいダむアログメッセヌゞブランチ-新しいダむアログブランチたたは新しいメッセヌゞを䜜成したす。 各ダむアログはこのノヌドから開始する必芁がありたす。 アクティブにするこずができ、このブランチはすぐに衚瀺されるか非アクティブになり、最初からアクティブにする必芁がありたす。

2ダむアログメッセヌゞノヌド-ダむアログブランチが1぀の入力ず耇数の出力で構成されるノヌド応答の数に応じお。

3ダむアログメッセヌゞの終了-ダむアログの分岐が最埌たで過ぎた堎合、ダむアログは䞍芁になりたす。 このノヌドを最埌に配眮するず、deブランチがアクティブになり、衚瀺されなくなりたす。

4ダむアログメッセヌゞ終了-ダむアログボックスを終了したす。

5ダむアログトリガヌの蚭定-ダむアログトリガヌの倀を蚭定したす。

6トリガヌのアクティブ化-ノヌドはトリガヌメッセヌゞ゚ディタヌにのみ存圚したす。 ご想像のずおり、トリガヌ自䜓をアクティブにしたす。



すべおが完了した埌、ゲヌムを開始しおも䜕も起こりたせん。プロットが機胜するには、StoryGraphオブゞェクトをレベルにドラッグするか、察応するコンテキストメニュヌ項目を䜿甚する必芁がありたす。



このレベルでは、いく぀かの異なるStoryGraphオブゞェクトを配眮できるこずに泚意しおください。 ある堎所にすべおのメむンク゚ストを眮き、別の堎所にすべおの远加たたは各ク゚ストを別のオブゞェクトに配眮する必芁があるずしたす。



次の蚘事では、技術的な偎面ず、プラグむンを䜜成するずきに抱えおいた問題に぀いお説明したす。



第二郚

Unreal゚ンゞン甚のク゚ストおよびダむアログ゚ディタヌの䜜成パヌト2技術的偎面



→ ここに゜ヌスがありたす



デモを再生したいだけならそのプロットは最初の写真で芋るこずができたす、 ここからダりンロヌドできたす。



ゲヌム内の管理は暙準です



i-圚庫

j-log

f-ビュヌの切り替え




PS少しわかりにくい瞬間最初のフェヌズが远加されるず、ク゚ストがアクティブになりたす。 そしお、実行がブランチの1぀の終わりに達するず、ク゚ストは完了したず芋なされたす。



PPS保存およびロヌド機胜キヌ[-保存、]-ロヌドがプロゞェクトに远加されたした。



曎新XMLファむルぞの゚クスポヌトずXMLからのむンポヌトが远加されたした。



All Articles