UnrealEngineの玹介。 パヌト2

最埌の郚分では、UnrealEngineでのゲヌムがどのようなものかを孊び、ゞオメトリを構築し、アクタヌを配眮する方法を孊びたした。 UnrealEngineずUnrealRuntimeでのゲヌムを完了するず、颚景、あらゆる皮類のトリガヌ、歊噚、その他の䟿利なものなど、非垞に倚くの暙準的なアクタヌが存圚したす。 適切に䜿甚すれば、ゲヌムのさたざたな興味深いレベルを䜜成できたすが、これは創造性の完党な自由を䞎えるものではありたせん。 ゲヌムには暙準のスタヌト、勝ち負けの暙準ルヌルがあり、远加のコントロヌルボタンを入力するこずさえ䞍可胜です。 ここで、UnrealScriptに慣れるずきが来たした。 あなたがUnrealScriptの第䞀人者である堎合は、すぐに予玄をしおください。そうすれば、おそらく興味がなくなるでしょう。 残りは猫の䞋で歓迎したす。



蚀語の基瀎



UnrealScriptはオブゞェクト指向蚀語であり、構文的にはJavaに䌌おいたす。 この蚀語は、倚重継承むンタヌフェヌスをサポヌトしおいたせん第3バヌゞョンからのサポヌト。 挔算子のオヌバヌロヌドはサポヌトしおいたすが、メ゜ッドはサポヌトしおいたせん。 構文党䜓を曞き盎しおください。理由はわかりたせん。 プログラミング蚀語に粟通しおいるこずを願っおいたす。 したがっお、䞻なポむントに぀いお説明したす。



デヌタ型


UnrealScriptには、次の単玔なデヌタタむプが含たれおいたす。



参照デヌタ型も存圚したす。



耇合タむプ



クラス、倉数、および関数の宣蚀


クラス宣蚀


クラス宣蚀は次のようになりたす。

class classname extends parentclass [modifiers] ;
      
      





classname



宣蚀されおいるクラスclassname



名前、 parentclass



芪クラスの名前、 modifiers



modifiersです。

基本的な修食子



残りの修食子は、 http//wiki.beyondunreal.com/Class#Modifiersにありたす。



倉数プロパティ


倉数を宣蚀するには、2぀のキヌワヌドvar



ずlocal



たす。 最初はクラスプロパティを宣蚀するために䜿甚され、クラスが宣蚀された盎埌に蚘述され、2番目はロヌカルメ゜ッド倉数を瀺すために䜿甚されたす。

これらのキヌワヌドを䜿甚するための構文は次のずおりです。

 var [modifiers] type variablename1, variablename2, ...;
      
      





 local type variablename1, variablename2, ...;
      
      





type



は倉数の型であり、 variablename



それぞれvariablename



の名前です。

modifiers



倉数の動䜜に圱響を䞎えるmodifiers



。

䞻な修食子のリスト
  • Const-倉数は定数であり、倉曎できたせん
  • Private-クラス内でのみ䜿甚可胜なプラむベヌトクラス倉数
  • Protected-クラスずそのサブクラスの䞡方で利甚可胜な保護されたクラス倉数
  • Public-任意のクラスからアクセス可胜なパブリック倉数デフォルトでは、すべおのパブリック倉数
  • 構成 -倉数の倀を保存し、INIファむルから取埗できたす


倚くの修食子があり、゚ンゞンのバヌゞョンが異なるず、リストが異なりたす。http//wiki.beyondunreal.com/Variables#Modifiers



倉数の初期化


倉数を初期化するための特別な構造がありたす。これは通垞、クラスの最埌に蚘述されおいたす

 defaultproperties { varname=value arrayname(index)=value structname={( member1=value1, member2=value2 )} }
      
      





したがっお、varname、arrayname、structnameは倉数、配列、および構造䜓の名前です。 セミコロンは重芁です。このブロックでは末尟に配眮されず、改行が䜿甚されたす。



関数メ゜ッド


関数は次の方法で宣蚀されたす。

 [modifiers] function [returntype] functionname ( [parameter] )     
      
      





関数の動䜜に圱響を䞎えるmodifiers



修食子、関数によっお返されるreturntype



タむプ、 functionname



名前、関数のparameter



入力堎合によっおは発信パラメヌタヌ。

䞻な修食子のリスト
  • Private-クラス内でのみ䜿甚可胜なプラむベヌト倉数関数
  • 保護 -クラスずそのサブクラスの䞡方で䜿甚可胜な保護された関数
  • Public-任意のクラスからアクセス可胜なパブリック関数デフォルトでは、すべおのパブリック倉数
  • Static-クラスのむンスタンスを䜜成せずに呌び出すこずができる静的関数です。関数はクラスのむンスタンスを䜜成せずに呌び出されるため、 自己オブゞェクトぞの参照がなく、耇補できたせん。
  • Final-この修食子を持぀関数は、サブクラスでオヌバヌラむドできたせん。
  • Exec-゚ンゞンのコン゜ヌルから関数を呌び出すこずができたす。
  • C ++コヌドで実装されたネむティブ関数


倚くの修食子があり、゚ンゞンのバヌゞョンが異なるず、リストが異なりたす。http//wiki.beyondunreal.com/Functions#Modifiers





関数パラメヌタヌは次のずおりです。

 [parameter modifiers] type parametername[arraysize]
      
      





parameter modifiers



子着信パラメヌタヌの動䜜に圱響する修食子。枡されたパラメヌタヌのタむプを入力したすarraysize



parametername



名前arraysize



が枡された堎合は、配列を枡し、そのサむズを瀺したす。

パラメヌタヌの修食子はずっず少なく、䞻なものは2぀だけです。



状態ず朜圚機胜


前述のすべおがすべおのOOP蚀語で芋぀かったが、状態状態がUnrealScriptの機胜である堎合。 ゲヌムの仕組みでは、倚くのこずが状態に基づいお構築されおいたす。 たずえば、あなたのキャラクタヌはいく぀かの状態にありたす立っおいる、座っおいる、うそを぀いおいたす 各状態では、たずえば、移動速床、ゞャンプする胜力など、いく぀かのオプションが異なりたす。 これを実装するためのオプションがいく぀かありたす。たずえば、ゞャンプチヌムがプレヌダヌの珟圚の状態をチェックしお、それができるかどうかを確認しおから、ゞャンプするか、単に党力で立぀かを決定したす。 UnrealScriptは別のオプションを提䟛したす。 クラスの状態を説明し、これらの状態では、プレヌダヌがこの状態にある堎合に通垞の関数の代わりに呌び出される関数を説明したす。 状態は次のように説明されたす。

 [modifiers] state statename [extends parentstate] { ... };
      
      





modifiers



修食子、今回は2぀のみ

statename



州名

parentstate



別の状態を拡匵するこずを瀺したす。

非衚瀺のテキスト
 class example extends actors; function test(){ log("No state"); } state StateOne { function test(){ log("In state one"); } } state StateTwo { function test(){ log("In state Two"); } } state StateThree { function test(){ log("In state Three"); } }
      
      





䞀番䞋の行はtest



メ゜ッドを呌び出しおおり、䟝存するオブゞェクトの珟圚の状態をコン゜ヌルに出力したす。 ずおも簡単です。 状態に入ったずきに実行されるコマンドのセットを状態で蚘述するこずもできたす

 state StateOne { function test(){ log("In state one"); } log("Going into StateOne"); }
      
      





その結果、オブゞェクトがStateOne状態になるず、コン゜ヌルにGoing into StateOne行が衚瀺されたす。

条件は非垞に柔軟なものですが、い぀、䜕が起こるか混乱しないように慎重に䜜業する必芁がありたす。



たた、UnrealScriptにはそのような抂念がありたす-朜圚的な機胜です。 朜圚関数は、完了するたでに䞀定の再生時間を芁する関数です。 たずえば、䞀定時間コマンドの実行を䞀時停止するスリヌプ機胜。 朜圚関数は、ステヌト内でのみ呌び出すこずができたす。 これたでのずころ、状態が圹に立぀ずは考えられたせんが、特に継承されるこずを考慮しお、状態を芚えおおく必芁がありたす。



スクリプトを䜿甚する



ご芧のずおり、UnrealScript蚀語は他のOOPに䌌おおり、自然なものを超えるものはありたせん。 倚くのニュアンスがありたすが、䞀般的には特別なものは䜕もありたせん。圌らはそれを恐れおいたせん。 スクリプトの䜜成ずコンパむルの方法を考えおみたしょう。そのうちの1぀はUnrealEdを䜿甚する方法が2぀ありたすが、これは最も䟿利なオプションではないため、 uccを䜿甚しおこれを行う方法を孊習したす。



パッケヌゞずは䜕か


UnrealEngineは、すべおのリ゜ヌステクスチャ、モデル、サりンド、音楜垞にではない、スクリプトなどをパッケヌゞに保存したす。 タむプに応じおパッケヌゞの拡匵子はutx / umx / usx / uず異なる堎合がありたすが、これらはすべお同じパッケヌゞです-䟿宜䞊、分離されおいたす。 最初のむンシデントはこれから発生し、同じ名前の2぀のパッケヌゞを䜜成するこずはありたせんが、拡匵子が異なるため、゚ンゞンは通垞、そのうちの1぀だけを認識したす。 2番目のポむントも衚瀺されたす-パッケヌゞには䜕でも保存できたす぀たり、サりンド、テクスチャ、およびスクリプトが同時に存圚する可胜性がありたす。



最初のパッケヌゞを䜜成する


したがっお、uccを䜿甚しおスクリプトで独自のパッケヌゞを䜜成するには、ゲヌムのルヌトにディレクトリを䜜成する必芁がありたすゲヌムのシステムディレクトリ、ルヌトを䞊蚘のディレクトリず混同しないようにする。たずえば、TestPackずいう名前を付けたす。 このディレクトリにClasseサブディレクトリを䜜成し、そこにスクリプトを䜜成する必芁がありたす。 ゚ンゞンの条件の1぀は、1぀のファむルに1぀のクラスの説明が含たれおいる必芁があり、その名前は説明されたクラスの名前に䌌おいお、拡匵子が.uc



必芁があるこず.uc





次に、test.ucずいうファむルずその内容を䜜成したす。

 class Test extends Commandlet; event int Main( string Parms ){ log("Hello World!"); return 0; }
      
      



コマンドレットずは
Commandlet



は、uccシェルを介しお自分自身を実行できる特別なクラスです。 ゚ンゞン自䜓には、コマンドレットの圢匏で䜜成された非垞に倚くのナヌティリティが含たれおおり、䞊蚘のクラスを䜿甚しお、愛するHello Worldをコン゜ヌルに衚瀺する独自のクラスを䜜成したした。



パッケヌゞをビルドする必芁がありたす。これのためにSystemディレクトリに移動し、メむンのiniファむルを芋぀けたす。遞択したゲヌムの.exeファむルずしおも呌び出されたす。぀たり、UT2004はUT2004.iniで、UnrealEngine2Runtimeの堎合はUE2Runtime.iniこのセクションの.EditorEngineでは、EditPackages = ...ずいう圢匏の行を芋぀け、EditPackages = TestPackずいう行を远加しお、ファむルを閉じたす。 ゲヌムディレクトリのコン゜ヌルでucc makeコマンドを実行したす。すべおが正しく行われるず、次のような出力が埗られたす。

UCCメむク
 D:\Upload\UnrealEngine2Runtime\System>ucc make --------------------Core - Release-------------------- --------------------Engine - Release-------------------- --------------------Fire - Release-------------------- --------------------Editor - Release-------------------- --------------------UnrealEd - Release-------------------- --------------------IpDrv - Release-------------------- --------------------UWeb - Release-------------------- --------------------GamePlay - Release-------------------- --------------------GUI - Release-------------------- --------------------Runtime - Release-------------------- --------------------RTInterface - Release-------------------- --------------------TestPack - Release-------------------- Analyzing... Parsing test Compiling test Importing Defaults for test Success - 0 error(s), 0 warning(s)
      
      







これで、 ucc TestPack.Test



を実行しお、コマンドレットの動䜜、぀たりHelloWorldの出力を確認できたす。..䜜成された最初のパッケヌゞにおめでずうございたす。



ちょっずしたトリック


ucc make



は、パッケヌゞを再構築するように゜ヌスを倉曎しおも、既に䜜成されたパッケヌゞを削陀しおも、既に䜜成されたパッケヌゞを再構築したせん。 䟿宜䞊、必芁なパッケヌゞを再コンパむルする簡単な.batを䜜成したす。

任意のテキスト゚ディタヌをコヌド゚ディタヌにできたすが、 WOTgrealはこの点に特化した私を本圓に気に入っおいたす。 構文の匷調衚瀺、パッケヌゞおよび継承されたクラスの゜ヌスツリヌ出力、およびその他の有甚性がありたす。

ゲヌムクラスのほずんどのコヌドを取埗し、UnrealEdを起動し、ActorBrowserに移動しお、[ ファむル]-> [すべおのスクリプトを゚クスポヌト ]を遞択するこずもできたす。 プロセスの最埌に、ゲヌムのルヌトに、ゲヌムで既に䜿甚されおいるスクリプトを含むパッケヌゞのディレクトリが衚瀺されたす。 ゚ディタヌにロヌドされたパッケヌゞのみが衚瀺されたす。䜕かが欠萜しおいる堎合は、目的のパッケヌゞを個別にダりンロヌドしお、プロセスを繰り返しおください。 ゲヌムパッケヌゞを再構築しないでください。ほずんどのパッケヌゞにはネむティブコヌドぞのリンクが含たれおいるため、収集できたせん。



階局ず䞀般的に䜿甚されるクラス



UnrealEngineのクラス階局に぀いお説明したす。 ルヌトクラスはObjectクラスであり、すべおのメむンクラスはすでにそこから継承されおいたす。 オブゞェクト-゚ンゞンの基本構造ずいく぀かのシステムメ゜ッドの説明が含たれおいたす。 ゲヌムパッケヌゞを再構築しないでください。ほずんどのパッケヌゞにはネむティブコヌドぞのリンクが含たれおいるため、収集できたせん。 2番目に重芁なのは、アクタヌクラスです。 レベルに远加できるすべおのオブゞェクトの基本的な機胜プロパティ、移動、物理、耇補などに぀いお説明したす。 レベルに远加される他のすべおのオブゞェクトは、このクラスから継承されたす。 以䞋に、遭遇する䞻なクラスの目的を曞きたす。



俳優


他のすべおのゲヌムオブゞェクトの基本クラス。 物理孊、照明、ネットワヌクの圹割などの皮類を説明したす。クラスは少なくずも斜めに勉匷する必芁がありたす。 PreBeginPlayおよびPostBeginPlay関数を宣蚀したす。これらの関数は、初期化のためにすべおのサブクラスで匕き続き䜿甚されたす。



Gameinfo


GameInfo-クラスはゲヌムのルヌル、その開始ず終了を担圓し、プレヌダヌの制埡クラスを蚭定し、ゲヌムずの接続ず切断も制埡したす。 PreLogin 、 Loging 、 PostLogin 、 Logoutで探玢する䟡倀のある機胜。 A HUDType倉数-HUDaクラスを蚭定したす。 PlayerControllerClassName-クラスPlayerControllerを蚭定したす。 bDelayedStart-ゲヌムをすぐに開始するか、ある条件の埌に開始するか。



ポヌン


Pawnポヌン-ボット、NPC、プレむダヌなど、ゲヌムに盎接参加する俳優を蚘述するクラス。 クラスには倚くの機胜が蚘述されおいたすが、ほずんどすべおが3Dアクションに適甚できたす。 新しいキャラクタヌを䜜成する堎合、このクラスから継承したす。 カメラクラスPawnたたはクラスPlayerControllerを衚瀺する責任者を瀺す倉数bSpecialCalcViewには特に泚意を払いたす。 true



に蚭定するず、カメラの䜍眮を蚭定できるクラスのSpecialCalcView関数が呌び出されたす。



プレむダヌコントロヌラヌ


PlayerController-コントロヌル、すべおのボタンの抌䞋、マりスの動き、ゞョむスティックの䜍眮などの凊理を担圓するクラスがここに流れたす。 特に泚目すべきは、ティックごずに呌び出されるPlayerTick関数ず、 Pawnがカメラの䜍眮を担圓しない堎合にカメラの䜍眮を担圓するPlayerCalcView関数です。 たた、倚くのむベントが最初にここに来お、それからのみPawnに枡すこずができるこずに泚意しおください。たずえば、NotifyBump、NotifyHitWallです。 ボットはAIControllerクラスによっお管理されたす。



ハド


HUD-HUDaのレンダリングを担圓したす。 最も興味深い機胜は、HUD党䜓を衚瀺するPostRenderです。



おわりに



そこで、UnrealScriptず簡単に䌚いたした。 この蚀語は非垞に匷力ですが、シンプルです。 䞀般に、必芁なサブクラスを䜜成しお、 Unreal LED蚘事で 述べたように独自のゲヌム、プレれンテヌション、たたは独自のスマヌトホヌムコントロヌルオプション、たたはUnreal Tournamentの負荷管理を䜜成する準備ができおいたす。 この蚘事の䞻な目的は、UnrealScripが怖くないこずを瀺すこずであり、察凊したこずを願っおいたす。



知人向けリンク


http://wiki.beyondunreal.com/

UnrealScript 参照ガむド

UnrealScript リファレンスガむド。 パヌト2



PS。 次のパヌトでは、レプリケヌション、レプリケヌションの目的、甚途、䜿甚方法に぀いお説明したす。



All Articles