PS Suite の基本UIアプリケーション
PS Suite の Open Beta が開始されましたので、さっそく SDK をインストールして簡単なアプリを作成してみました。
アプリといってもゲーム開発のスキルはないので Widget を使ったものです。
PS Suite には UI Toolkit というライブラリが用意されていて、これを使って UI を作成する事ができますので、UI Toolkit を使って簡単な画面を表示してみたいと思います。
PS Suite でのアプリ開発には PlayStation Suite Studio(PssStudio)を使用します。
PlayStation Suite Studio で新規ソリューションの作成を行い、基本的なアプリケーション作成ように用意されている“PlayStation Suite アプリケーション”を選択します。
作成されたソリューションを見てみると、AppMain.cs というソースファイルがあり、ここにメインの処理が記述されています。
AppMain.cs の中身は以下のようになっています。
using System; using System.Collections.Generic; using Sce.Pss.Core; using Sce.Pss.Core.Environment; using Sce.Pss.Core.Graphics; using Sce.Pss.Core.Input; namespace BasicUIApp { public class AppMain { private static GraphicsContext graphics; public static void Main (string[] args) { Initialize (); while (true) { SystemEvents.CheckEvents (); Update (); Render (); } } public static void Initialize () { // Set up the graphics system graphics = new GraphicsContext (); } public static void Update () { // Query gamepad for current state var gamePadData = GamePad.GetData (0); } public static void Render () { // Clear the screen graphics.SetClearColor (0.0f, 0.0f, 0.0f, 0.0f); graphics.Clear (); // Present the screen graphics.SwapBuffers (); } } }
初期化の後はループに入り、イベントチェック、状態の更新、描画が行われるようになっています。
ここに UI 表示用の処理を追加して行きますが、UI 表示用のテンプレートがサンプルとして用意(UIToolkit_template)されていますので、これを参考にします。
まず、UI Tookit を使用するための参照設定が必要です。
ソリューションツリーに表示されている“参照”を右クリックして“参照アセンブリの編集”を選びます。参照の編集画面が表示されますので、ここで“Sce.Pss.HighLevel.UI”にチェックを追加して OK します。
これで UI Toolkit が使用できるようになりましたので using を追加しておきます。
using Sce.Pss.HighLevel.UI;
続いて、初期化、更新、描画に処理を追加します。
初期化には UI Toolkit の初期化処理を追加します。
TODO の部分は表示するシーンに応じて書き換える必要があります。
public static void Initialize () { // Set up the graphics system graphics = new GraphicsContext (); // Initialize UI Toolkit UISystem.Initialize (graphics); // TODO: Create scenes and call UISystem.SetScene // Scene myScene = new Scene(); // UISystem.SetScene(myScene, null); }
更新にはタッチデータを使って UI を更新する処理を追加します。
public static void Update () { // Query touch for current state List<TouchData> touchDataList = Touch.GetData (0); // Update UI Toolkit UISystem.Update(touchDataList); }
描画には UI Toolkit の描画処理を追加します。
public static void Render () { // Clear the screen graphics.SetClearColor (0.0f, 0.0f, 0.0f, 0.0f); graphics.Clear (); // Render UI Toolkit UISystem.Render (); // Present the screen graphics.SwapBuffers (); }
このように、ゲーム用のループ処理の中に UI Toolkit の処理を追加する事で、Widget を使った UI を表示できるようにしています。
方式としては Windows Phone の XNA + Silverlight と同じようなものだと思います。
これが基本になりますが、このままでは何も表示されませんので、Widget を置いて表示させてみたいと思います。
Widget を配置した画面は PlayStation Suite UI Composer で作成します。
UI Composer を起動して、新規プロジェクトを作成します。ファイルパスは先ほど作成したソリューションのソースが配置されているフォルダーにします(ここに UI のソースが生成されます)。
プロジェクトを作成すると、画面を作成するためのダイアログが表示されます。
今回はメイン画面を作成しますので、“レイアウトするクラス”は“Scene”、サイズは PS Vita 用の 960x544 で作成します。
作成すると画面にシーンが表示されますので、Label を配置して適当にプロパティをいじってみます(テンプレートのままだと背景が黒になりますので、文字色は黒以外に変えます)。
配置が終わったらファイルメニューからビルドを実行します。
成功すると、プロジェクト作成時に指定したファイルパスに xxx.cs と xxx.composer.cs(xxxの部分は画面作成時に指定した名前。今回は MainScene と指定)が生成されます。
生成されたファイルは、PssStudio のソリューションでプロジェクト名を右クリックして“追加”-“ファイルの追加”で取り込みます。
後は、初期化時に生成したシーンクラスを設定すれば完成です。
public static void Initialize () { // Set up the graphics system graphics = new GraphicsContext (); // Initialize UI Toolkit UISystem.Initialize (graphics); var mainScene = new MainScene(); UISystem.SetScene(mainScene, null); }
ビルドして実行すると、シミュレーターが起動し以下のようにラベルが表示されます。