UDN
Search public documentation:

CLIKINIListJP
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 ホーム > ユーザーインターフェイスと HUD > 「Scaleform GFx」 > ini ファイルからリストを満たす方法

ini ファイルからリストを満たす方法


概要


スクロールリストやドロップダウンなどを ActionScript で満たすことは非常に簡単です。インスタンス名が dropDownList となっているドロップダウンメニューがあれば、リストを満たすには dataProvider プロパティを使用するだけでよいのです。

ActionScript
dropDownList.dataProvider = ["row1", "row2", "row3", "row4", "row5", "row6", "row7", "row8"];

しかし、ほとんどの場合は、UnrealScript を使用して動的にリストを満たす必要があるでしょう。これも簡単です。

INI ファイル


UDK コンフィギュレーションファイル (具体的には DeraultUI.ini ファイル) によってリストを満たすことにします。そのファイルを開き、最後に以下を追加します。(注意 : 以下では、SFMenuTutorial という名のドロップダウンリストが含まれているクラスを想定しています)。

[UTGame.SFMenuTutorial]
+ListOptions=(OptionName="Option 1",OptionLabel="Cool",OptionDesc="Something cool.")
+ListOptions=(OptionName="Option 2",OptionLabel="Awesome",OptionDesc="Something awesome.")
+ListOptions=(OptionName="Option 3",OptionLabel="Amazing",OptionDesc="Something amazing.")

各行は、リスト内のオプションを表しています。

OptionLabel がリストに表示されます。他のアイテムはオプションです。各行には好きなだけアイテムを含めることができます。ただし、その場合コンマ (:) でアイテムを区切らなければなりません。

UnrealScript


ここで、ドロップダウンスクロールリストを含んでいる UnrealScript ファイル (筆者の場合は、SFMenuTutorial) において、コンフィギュレーション宣言に UI ファイルが含まれるようにします。これは、基本的には、コンフィギュレーション ファイルの名前から Default の部分を削除したものです。DefaultUI.ini であれば、単に UI とします。

Unrealscript
class SFMenuTutorial extends GFxMoviePlayer
  config(UI);

次に、重要な変数をいくつか宣言します。最初の変数は、Flash における実際のドロップダウン スクロールリストへの参照として使用されるものです。その次は構造体です。(リスト内の各オプションは、3 つの文字列変数から構成されます)。

Unrealscript
/** The drop down menu */
var GFxClikWidget DropDown;

/** Structure which defines each option in the list. */
struct Option
{
  var string OptionName;
  var string OptionLabel; // This will be displayed in the list.
  var string OptionDesc;
};

さらに、この構造体型 (Option) の配列を宣言します。この配列は、DefaultUI で定義されている各オプションを保持します。この配列には、var キーワードの後に config キーワードが付くことによって、この配列のデータがコンフィギュレーション ファイルに置かれていることが示されます。必要なデータは、コンフィギュレーション ファイル(上記参照) 内で ListOptions という行のアイテムに置かれています。

Unrealscript
/** Aray of all list options, defined in DefaultUI.ini */
var config array<Option> ListOptions;

次に、ドロップダウンリストを初期化します。その場合、Flash 内のドロップダウンリストが dropDownList というインスタンス名をもつことが想定されています。

Unrealscript
event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget)
{
  switch(WidgetName)
  {
  case ('dropDownList'):
    DropDown = GFxClikWidget(Widget);
    SetUpDataProvider(DropDown);
    break;

  default:
    break;
  }
  return true;
}

SetUpDataProvider() 関数を実行していることに注目してください。新たに参照された DropDown ウィジェットが引数としてこの関数に渡されています。この関数は、以下に記述されています。基本的には、一時的なオブジェクト (TempObj) を作成することによって、コンフィギュレーション ファイルの ListOptions 行に置かれている各種オプションを保持しています。各オプションは、要素オブジェクトとして DataProvider という配列に格納されます。さらに、SetObject を使用して、オプションオブジェクトの配列 (DataProvider) を、ドロップダウンメニューの dataProvider プロパティにアサインします。

Unrealscript
function SetUpDataProvider(GFxClikWidget Widget)
{
  local byte i;
  local GFxObject DataProvider;
  local GFxObject TempObj;

  DataProvider = CreateArray();

  switch(Widget)
  {
  case(DropDown):
    for (i = 0; i < ListOptions.Length; i++)
    {
      TempObj = CreateObject("Object");
      TempObj.SetString("name", ListOptions[i].OptionName);
      TempObj.SetString("label", ListOptions[i].OptionLabel); // this will be displayed in the list
      TempObj.SetString("desc", ListOptions[i].OptionDesc);

      DataProvider.SetElementObject(i, TempObj);
    }
  }

  Widget.SetObject("dataProvider", DataProvider);
}

最後に、必ず、defaultproperties 内でドロップダウンのためのウィジェットをバインドします。

Unrealscript
defaultproperties
{
  WidgetBindings.Add((WidgetName="dropDownList",WidgetClass=class'GFxClikWidget'))
}

これだけで完了です!

補遺


ドロップダウンリストについては、表示される行数が自動的に変化します。したがって、5 行未満のオプションがある場合は (たとえば、3 行の場合は)、3 行が表示されます。最大 5 行が表示されます。この値は DropdownMenu.as クラスにハードコードされていますが、値を変更することは可能です。

スクロールリストについては、UnrealScript 内で rowCount を手動で指定する必要があります。

Unrealscript
MyScrollingList.SetFloat("rowCount",ListOptions.Length);