PDA

View Full Version : コンフィグ画面の値設定・保存について



Ayaemon
08-25-2011, 10:02 PM
現在コンフィグ画面を作ろうとしているんですが、
システム設定をどのように変更・保存すればよいのかが分からず、困っています。

システム設定情報:http://udn.epicgames.com/Three/SystemSettingsJP.html
↑これらの値を、できるだけKismetでではなくUnreal Scriptで設定・保存させたいのですが、
どのようにアプローチすればよいでしょうか。

私が調べた限りでは、
http://udn.epicgames.com/Three/ConfigurationFilesJP.html
↑ここにあるように、SaveConfig()やStaticSaveConfig()を使えばいいとある んですが、
例えば解像度やフルスクリーン設定などが
どのクラスで定義されているのかが探しても見つからないんですよね。

もしこの辺の解決方法やヒントなどが分かる方がいましたら、教えて下さると嬉しいです。:)

Ayaemon
08-27-2011, 06:28 AM
おかげさまで解決しました。

参考までに、以下の方法でコンフィグ画面(PauseMenuで使用)を作りました。

・Flashでインターフェース作成。
・actionscriptのExternalInterface()命令を使って、FlashからUnr eal Scriptの命令を実行できる。
今回はポーズメニューにコンフィグ設定を作ったので、swfを再生するクラスはGFxUI_PauseMe nuクラスを利用。
GFxUI_PauseMenuクラスにはUT_ConsoleCommand()というConsoleC ommandを実行できる関数が
用意されているので、それを使ってシステム設定を操作します。

以下はボタンインスタンスに割り当てるactionscript。


//(解像度を1024x768にしたい場合)
on (release)
{
import flash.external.ExternalInterface;
ExternalInterface.call("UT_ConsoleCommand","SETRES 1024x768");
}


//(解像度を1024x768で保存したい場合。値の保存のみ)
on (release)
{
import flash.external.ExternalInterface;
ExternalInterface.call("UT_ConsoleCommand","SCALE SET ResX 1024");
ExternalInterface.call("UT_ConsoleCommand","SCALE SET ResY 768");
}

上記のように、ConsoleCommandのSCALE SETを用いて値を保存します。
SCALEについては、こちらを参照:http://udn.epicgames.com/Three/ConsoleCommands.html#System Settings Commands

設定できる値は、以下の通り。
システム設定:http://udn.epicgames.com/Three/SystemSettingsJP.html


・(備考1)
例えばマップ移動をさせたい場合、Console Commandで"open YOURMAPNAME"を使えばマップ移動可能です。
タイトルに戻る場合などは、これを用いればいいでしょう。


on (release)
{
import flash.external.ExternalInterface;
//fscommand("storystart",1);
ExternalInterface.call("UT_ConsoleCommand","open YOURMAPNAME");
}

なお、fscommand()はKismetに簡単に値を渡せるのでお手軽にできますが、テスト実行向けで 、製品には用いない方がいいとのことです。

・(備考2)
タイトルメニューを作りたい場合、GFxMoviePlayerでswfを再生すればいいでし ょう。
このシリーズのチュートリアルが役に立ちます。:http://www.youtube.com/watch?v=dtDko9ujCYM
私は最初にタイトルメニューを作って、それでポーズメニュー(コンフィグ含む)を作りました。
その方が理解が早いかと思います。


・タイトル画面例:
http://circlemebius.sakura.ne.jp/aya/cg/udkforum002_mainmenu.jpg

・設定画面例:
http://circlemebius.sakura.ne.jp/aya/cg/udkforum003_config.jpg




なんかすっごく分かりにくい説明になってしまいましたが、とっかかりの参考程度にでもなればと 思います。
お役に立てば嬉しいです。:)

Ayaemon
09-05-2011, 02:13 AM
(追記)
肝心のシステム設定情報について、説明していませんでした。
システム設定情報は、一部を除いて多くがUnreal Scriptでは取得できないようです。

以下に取得できる内容を記しておきます。

・画像解像度関連(ResX、ResY、FullScreen):
 GameViewportClientのGetViewportSize()とIsFullScreen Viewport()で取得できます。
 HUD(Scaleform)で用いるであろうGFxMoviePlayerクラスにGetViewpo rtSize()命令があるので、
 これを利用するといいでしょう。

・ガンマ:
 UDKEngine.iniに[Engine.Client]DisplayGamma=2.2という初期値があります。
 初期値を2.2として、値を保存しておけばいいでしょう。
 ユーザーがコンフィグではなくコンソールコマンドで直接値を変更した場合は
 コンフィグにはその値は反映されませんが、「コンソールでは扱わないことを前提とする」とすれば、問題な いかと。

・マウス感度、マウススムージング、上下反転:
 PlayerInputクラスにあります。

・音量:
 ガンマ値と同様に、初期値を1.0として、適当なコンフィグファイルに値を保存すれば大丈夫 です。


ポストプロセスなどの一部の設定は、起動する度にシステムが強制的にONにするようです。
その場合は、ViewportClientが立ち上がってプレイヤーの画面を初期化する時に、
毎回ConsoleCommandでオフにするとよいとのことです。
参考:http://udn.epicgames.com/Three/DungeonDefenseDeveloperBlogJP.html#Blog 7: 23 日目
(ページ内で「解像度の選択とフルスクリーン / ウインドウの切り替え」で検索すれば、該当部分が見つかります)


代表的な項目を列挙しましたが、他のシステム設定については、探せば取得できるかもしれません 。

以上、基本的な項目のみになりますが、参考になれば嬉しいです。