UDN
Search public documentation:

UnrealScriptClassesJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > UnrealScript > UnrealScript 言語のリファレンス > UnrealScript のクラス

UnrealScript のクラス


概要


クラス は、基本的に、ゲーム内でエンジンによって使用されるアイテムの設計図となるものです。この設計図によって、クラスの インスタンス が作成されます。エンジンが実際に扱うのは、このインスタンスです。一般的なプログラミング用語において、クラスのインスタンスは オブジェクト と呼ばれます。これは UnrealScript でも同様です。ただし、「Unreal」によるゲーム内でプレイヤーが見たり、インタラクトしたりするアイテムは、 アクタ (Actor) と呼ばれます。これは、アイテムが Actor クラスを拡張したものだからです。 Object クラスを直接拡張したクラスもありますが、これらは通常アクタによって使用されるヘルパークラス (例 : コンポーネント ) です。

UnrealScript におけるクラスとオブジェクトの概念は、他のほとんどのオブジェクト志向プログラミング言語における概念と同様です。 この種のトピックスは、インターネット上に多数あります。

クラスの宣言


スクリプト 1 個は、正確に、クラス 1 個に対応します。スクリプトは、まず、クラスおよびそのクラスの親クラス、そのクラスに関係する付加的な情報を宣言することから始まります。最もシンプルな形は、次のようになります。

MyClass.uc
class MyClass extends MyParentClass;

上記では、 MyClass という新たなクラスが宣言されています。このクラスは、 MyParentClass クラスの機能を継承します。つまりクラスは、それぞれ、その親クラスの変数、関数、ステートをすべて含むことになります。さらに、各クラスは、新たな変数の宣言、新たな関数 (または、既存の関数をオーバーライド)、また新たなステートを追加 (または既存のステートに機能を追加) することが可能です。

継承とポリモーフィズム (すなわち関数のオーバーライド) の概念は重要です。プログラミング (特にオブジェクト志向の言語) が初めての方はよく研究すべきでしょう。

クラス指定子


クラスの宣言には、オプションで複数の指定子をつけて、クラスに影響を与えることができます。それらのキーワードは、基本的なクラス宣言の後に置きますが、宣言の最後に置くセミコロンの前に置かなければなりません。指定子は、宣言と同じ行にそのすべてを置くことができます。あるいは、宣言の行の後に、複数の行にまたがって置くこともできます (このように改行する場合は、インデントをつけるのがよいでしょう)。

MyClass.uc

class MyClass extends MyParentClass [Specifier Specifier ... Specifier];

および

MyClass.uc
class MyClass extends MyParentClass
   [Specifier
   Specifier
   ...
   Specifier];

使用できる指定子は、説明付きで以下にリストされています。

Native(PackageName)
「このクラスは、影の C++ サポートを使用する」ということを示します。「Unreal」は、native のクラスが、.EXE における C++ による実装を含んでいるものと見なします。native のクラスだけが、native の関数を宣言、または native のインターフェイスを実装することが可能です。native のクラスは、必ず、別の native のクラスから派生しなければなりません。native のクラスは、自動生成 C++ ヘッダファイルを作成します。これには、スクリプトの変数および指定された関数とのインタラクトに必要な グルー が付きます。デフォルトでは、 PackageName が、スクリプトのクラスが置かれるパッケージです。たとえば、当該クラスが Engine パッケージ内にある場合は、自動生成ヘッダは EngineClasses.h となります。
NativeReplication
当該クラスのための変数値のコピーが、C++ 実装で扱われるということを示します。native クラスについてのみ有効です。
DependsOn(ClassName[,ClassName,...])
ClassName が、当該クラスよりも前にコンパイルされることを示します。 ClassName には、同一の (または前の) パッケージ内にあるクラスを指定しなければなりません。多重依存クラスを指定するには、コンマで区切って単一の DependsOn の行を使用するか、あるいは、クラスごとに DependsOn の行を使用します。このことが重要となるのは、他のクラスで宣言された構造体や列挙型変数が、クラスで使用される場合です。その理由は、コンパイラが、当該クラス内にあり、かつ、すでにコンパイルしたものしか分からないからです。
Abstract
当該クラスを「抽象的な基本クラス」として宣言します。この指定子によって、ユーザーは、「Unreal」エディタ内で当該クラスのアクタをワールドに追加することができなくなるとともに、ゲーム中にこのクラスのインスタンスを作成することができなくなります。このクラスだけでは意味がないためです。たとえば、 Actor 基本クラスは abstract ですが、そのサブクラスである Ladder (はしご) クラスは abstract ではありません。この場合、 Ladder クラスをワールドに配置することができますが、 Actor クラスをワールドに配置することはできません。このキーワードは、イントリシックな子クラスに継承されますが、スクリプトの小クラスには継承されません。たとえば、 Actor は abstract で、 PawnActor を拡張しますが、abstract が宣言されていません。abstract 指定子が継承されないため、この Pawn クラスはインスタンス化することができます。
Deprecated (非推奨)
このクラスによるオブジェクトはすべて、ロードされるものの、保存できなくなります。deprecated アクタのインスタンスが配置されると、エディタ内でマップがロードされた時に、レベルデザイナーに警告が発せられます。このキーワードは、子クラスに継承されます。
Transient (一時的)
「このクラスに属するオブジェクトは、決してディスクには保存しないように」ということを示します。 本質的に永続的 (persistent) ではない native クラスの類 (例 : プレイヤーやウインドウなど) とともに使用する場合にのみ役立ちます。このキーワードは、子クラスに継承されます。子クラスは、 NonTransient キーワードを使用してこのフラグをオーバーライドすることができます。
NonTransient
基本クラスから継承される Transient キーワードを無効化します。
Config(IniName)
当該クラスが コンフィギュレーション ファイル (.ini) 内にデータを保存することが可能であることを示します。クラス内にコンフィギュレーション可能な変数 ( config または globalconfig 変数指定子 をともなって宣言された変数) がある場合は、この config 指定子を付けることによって、それらの変数がカッコ内のコンフィギュレーション ファイルに保存されるようになります。このフラグは、子クラス全てに継承され、無効にすることはできません。ただし、子クラスが、 config キーワードを再宣言して異なるファイル名を指定すると、.ini ファイルを変更することができます。 IniName の値は、Game の部分を取り除いたゲーム名に追加されます。これによって、データを保存する .ini ファイル名が指定されることになります。(例 : UDKGame において、 Config(Camera) を指定することによって、当該クラスは UDKCamera.ini ファイルを使用するようになります)。また、 inherit キーワードを IniName として指定することができます。これによって、クラスがその親クラスと同じ config ファイルを使用するようになります。以下は、デフォルトですでに存在している .ini ファイルです。
  • Config(Engine): Engine コンフィギュレーション ファイルが使用されます。このコンフィギュレーション ファイルの名前は、ゲーム名の後に Engine.ini が付いたものです。たとえば、UDKGame の Engine コンフィギュレーション ファイルは、 UDKEngine.ini となります。
  • Config(Editor): Editor コンフィギュレーション ファイルが使用されます。このコンフィギュレーション ファイルの名前は、ゲーム名の後に Editor.ini が付いたものです。たとえば、UDKGame の Editor コンフィギュレーション ファイルは、 UDKEditor.ini となります。
  • Config(Game): Game コンフィギュレーション ファイルが使用されます。このコンフィギュレーション ファイルの名前は、ゲーム名の後に Game.ini が付いたものです。たとえば、UDKGame の Game コンフィギュレーション ファイルは、 UDKGame.ini となります。
  • Config(Input): Input コンフィギュレーション ファイルが使用されます。このコンフィギュレーション ファイルの名前は、ゲーム名の後に Input.ini が付いたものです。たとえば、UDKGame の Input コンフィギュレーション ファイルは、 UDKInput.ini となります。
PerObjectConfig
当該クラスのコンフィギュレーション情報が、オブジェクト単位で保存されるようになります。その場合、.ini ファイル内において、 [ObjectName ClassName] という形式によるオブジェクト名にちなんだセクションが各オブジェクトのためにできます。このキーワードは、子クラスに継承されます。
PerObjectLocalized
当該クラスのローカライズされた情報が、オブジェクト単位で定義されるようになります。その場合、.ローカライゼーション ファイル内において、 [ObjectName ClassName] という形式によるオブジェクト名にちなんだセクションが各オブジェクトのためにできます。このキーワードは、子クラスに継承されます。
EditInlineNew
エディタ。当該クラスのオブジェクトが「Unreal」エディタのプロパティ ウインドウから作成可能であることを示します。(デフォルトの動作では、プロパティ ウインドウからは、既存のオブジェクトへの参照しか割り当てることができません)。 このフラグは、子クラスに継承されます。子クラスは、 NotEditInlineNew キーワードを使用して、このフラグをオーバーライドすることができます。
NotEditInlineNew
エディタ。基本クラスから継承される EditInlineNew キーワードを無効化します。親クラスで EditInlineNew を使用しているものがない場合は無効です。
Placeable
エディタ。当該クラスが、「Unreal」エディタで作成し、レベルまたは UI シーン、Kismet ウインドウに配置できる (クラスのタイプによる) ことを示します。このフラグは、子クラスに継承されます。子クラスは、 NotPlaceable キーワードを使用してこのクラスをオーバーライドすることができます。
NotPlaceable
エディタ。基本クラスから継承される Placeable キーワードを無効化します。「Unreal」エディタにおいて当該クラスがレベルなどに配置できないことを示します。
HideDropDown
エディタ。当該クラスが、「Unreal」エディタにおけるプロパティ ウインドウのコンボボックス内で表示されないようになります。
HideCategories(Category[,Category,...])
エディタ。当該クラスのオブジェクトについて、「Unreal」エディタのプロパティ ウインドウで非表示にすべき1 つ以上のカテゴリーを指定します。カテゴリーなしで宣言された変数を非表示にするには、その変数を宣言しているクラスの名前を使用します。このキーワードは、子クラスに継承されます。
ShowCategories(Category[,Category,...])
エディタ。基本クラスから継承される HideCategories キーワードを無効化します。
AutoExpandCategories(Category[,Category,...])
エディタ。当該クラスによるオブジェクトについて、「Unreal」エディタのプロパティ ウインドウで自動的に展開すべき1 つ以上のカテゴリーを指定します。カテゴリーなしで宣言された変数を自動的に展開するには、その変数を宣言しているクラスの名前を使用します。
CollapseCategories
エディタ。当該クラスのプロパティが、「Unreal」エディタのプロパティ ウインドウでグループ化されてはならないことを示します。このキーワードは、子クラスに継承されます。子クラスは、 DontCollapseCategories キーワードを使用することによって、このフラグをオーバーライドすることができます。
DontCollapseCategories
エディタ。基本クラスによって継承される CollapseCatogories キーワードを無効化します。
ForceScriptOrder(true/false)
エディタ。当該クラスのオブジェクトを表示するプロパティウインドウが使うプロパティとカテゴリーの順番を、スクリプトで定義されたものにする (true の場合) か、あるいは、アルファベット順にします (false の場合)。
Within ClassName
高度。当該クラスのオブジェクトが、 ClassName のインスタンスなしには存在できないことを示します。当該クラスのオブジェクトを作成するには、 Outer オブジェクトとして ClassName のインスタンスを指定しなければなりません。このキーワードは、クラス宣言自体の直後に続くようにしなければなりません。
Inherits(ClassName[,ClassName,...])
高度。多重継承のために使用されます。(追加の基本クラスを指定します)。複数の基本クラスを指定するには、コンマで区切って単一の Inherits の行を使用するか、あるいは、基本クラスごとに Inherits の行を使用します。native クラスについてのみ有効です。UObject から派生したクラスを 2 個使用する多重継承はサポートされていません。
Implements(ClassName[,ClassName,...])
高度。当該クラスで実装される 1 つ以上の インターフェイス クラスを指定します。複数のインターフェイスを指定するには、コンマで区切って単一の Implements の行を使用するか、あるいは、基本クラスごとに Implements の行を使用します。native クラスだけが native インターフェイスを実装することができます。
NoExport
高度。当該クラスの C++ 宣言が、スクリプト コンパイラによって自動生成される C++ ヘッダファイルに含まれてはならないことを示します。C++ クラス宣言は、別のヘッダファイルに手書きで定義しなければなりません。native クラスについてのみ有効です。
ClassGroup(Groupname[,Groupname,...])
Actor ブラウザにおいて Group View が有効な場合、エディタの Actor ブラウザが、当該クラスおよび当該クラスのあらゆるサブクラスを、指定された GroupName 内に含めるようにすることを示します。