WINDOW

WINDOW(ウィンドウID) {

プロパティ1;

プロパティ2;

:

:

プロパティn;

};

ウィンドウIDは、 マルチID で指定してください。

wraファイル名が TestWindow.wra ならば、TestWindowBase.csというファイルを自動生成します。

TestWindowBase.cs

使うときは、TestWindow.csを作り、TestWindowBaseを継承してください。

TestWindowBase.csが出力されるパスは、スクリプト上で PATH を使って指定できます。

using UnityEngine;
using System;

public class TestWindow : TestWindowBase {
    :
    :
}

記述例

最少のウィンドウスクリプト

WINDOW(250_000_00000) {
  STYLE = ANCHOR_CENTER;
  SIZE = 400,400;
};

このスクリプトで次のようなウィンドウが表示されます。

_images/WindowSample0.png

ウィンドウの原点位置は、フレームの左上です(タイトルバーの左上ではありません)。

次のように記述するとタイトルバーが見えなくなります。

WINDOW(250_000_00000) {
  STYLE = ANCHOR_TOP;
  SIZE = 400,400;
};

次のように記述するとタイトルバーが表れます。

WINDOW(250_000_00000) {
  STYLE = ANCHOR_TOP;
  POSITION = 0,-64;
  SIZE = 400,400;
};

クローズボタンのないウィンドウスクリプト

クローズボタンを削除するには次のようにスタイルを設定します。

WINDOW(250_000_00000) {
  STYLE = NOCLOSE|ANCHOR_CENTER;
  SIZE = 400,400;
};
_images/WindowSample1.png

タイトルバーを無くしたウィンドウスクリプト

タイトルバーを無くしたウィンドウスクリプト

WINDOW(250_000_00000) {
  STYLE = NOTITLEBAR|ANCHOR_CENTER;
  SIZE = 400,400;
};
_images/WindowSample2.png

全てのデフォルト表示を消したウィンドウスクリプト

全てのデフォルト表示を消したウィンドウスクリプト

WINDOW(250_000_00000) {
  STYLE = NOTITLEBAR|NOFRAME|ANCHOR_CENTER;
  SIZE = 400,400;
};
_images/WindowSample3.png

全ての表示をコントロールを直接記述することで見た目のカスタマイズを最大限行えます。

ウィンドウのドラッグ移動について

STYLEにDRAGを付けることによって、ドラッグによるウィンドウの移動を許可します。

タイトルバー、フレームやユーザー定義のコントロールをドラッグしたときに、ウィンドウを移動できます。 ただし、コントロールのスタイルにDRAGが付いているときは、ウィンドウの移動は発生しません。 以下の例を試してください。

WINDOW(250_000_00000) {
  STYLE = ANCHOR_CENTER|DRAG|NOFRAME;
  POSITION = 0,0;
  CLOSE_POSITION = 400,0;
  SIZE = 400,400;
};
FRAME(Test) {
  STYLE = DRAG;
  SIZE = 400,400;
};
_images/WindowSample4.png

この例では、フレームをドラッグすると、フレームが複製され、その複製が移動します。 その反面、タイトルバーをドラッグするとウィンドウを移動することができます。

プロパティ

RESOURCE = マルチID

[Tools]->[KsSoft]->[Export Window Resource]を行ったとき、アセットバンドルとして出力します。

同一の マルチID を指定していると、一つにまとめてアセットバンドル化してくれます。

RESOURCE = 000_014_00000;

この例では、000_014_00000.unity3dというアセットバンドルに出力します。

RESOURCE = パス

指定したパスに、リソースデータとして出力されます。

同一のパスを指定したときは、一つにまとめたリソースを出力してくれます。

RESOURCE = "Assets/KsSoft/Resources/windows";

この例では、Assets/KsSoft/Resources/windows.assetというリソースを出力します。

PATH = パス文字列

ウィンドウベースクラスを出力するパスを設定します。

カレントパスは、Unityプロジェクトの直下になります。

PATH = "../../../client/Assets/Script/TestWindow.cs";

TEX_ID = テクスチャID

デフォルトのテクスチャIDを設定します。

ここで設定した値は、各コントロールにおいて、テクスチャIDを省略したとき、適用されます。

TEX_ID = 010_000_00010;

TEX_ID 0~7 = テクスチャID

デフォルトのテクスチャIDを設定します。

コントロール内のテクスチャIDを省略したとき、この値が使われます。

また、フレーム、タイトルバーに使うテクスチャもここで指定できます。

CAPTION = キャプションID

ウィンドウのキャプション文字を設定します。

STYLE に対して NOTITLEBAR が付いているときは、無視されます。

CAPTION = 020_000_00010;

POSITION = X,Y

ウィンドウ表示位置を決定します。 表示位置は、STYLEで指定するアンカーによって変わります。

座標は スクリーン からの割合指定が可能です。

display position = (x,y) + screen size * ratio/100;
POSITOIN = 30{50},-40{50};

この例では、スクリーンサイズが640x960であるならば、実際のウィンドウの座標は次のように計算されます。

::

x = 30 + 640 * 50/100 = 350 y = -40 + 960 * 20/100 = 440

SIZE = 横サイズ,縦サイズ

ウィンドウサイズを指定します。

サイズは スクリーン からの割合指定が可能です。

display size = size + screen size * ratio/100;
SIZE = 100{50},50{20};

この例では、スクリーンサイズが640x960であるならば、実際のウィンドウサイズは次のように計算されます。

::

width = 100 + 640 * 50/100 = 420 height = 50 + 960 * 20/100 = 242

SCREEN = 左上X,左上Y,横サイズ,縦サイズ

スクリーンの位置とサイズを指定します。

ウィンドウは、指定されたスクリーンに沿って大きさや位置が決定されます。

スクリーンを指定しないときは、全画面と同義になります。

SCREEN = 0,0,0{100},0{100};     //Same as Full Screen

4つのパラメータ全て、割合指定が可能です。

STYLE = ANCHOR_CENTER;
SCREEN = 0,100,0{100},-50{100};
SIZE = 400,400;

この例では、下図のようにウィンドウを配置します。

_images/winprop_screen.png

セーフエリア

ノッチ付の端末に対応するためにセーフエリアを基準にSCREENを設定できます。

SCREEN = SAFEAREA(0,0,{100},{100});

PRIORITY = 表示プライオリティ

ウィンドウの表示プライオリティを設定します。 大きいほど、表示優先度が高くなり、手前に表示されます。 TEXTURE_ZOFFSET との違いに気を付けてください。

PRIORITY = 32;

TEXTURE_ZOFFSET = テクスチャID,Zオフセット

本ウィンドウシステムは、レンダリング最適化のために、同一テクスチャを使っているコントロールは全て単一のメッシュでレンダリングしようとします。

よって、各コントロール間のプライオリティは、あくまでも同一テクスチャを用いているコントロール間の表示優先度になります。

各テクスチャ間の表示優先度を変更するためには、TEXTURE_ZOFFSETを使います。これによって、特定のテクスチャを用いるメッシュの表示優先順位を変更できます。

小さいほど、表示優先度が高くなります。

TEXTURE_ZOFFSET = 014_000_00010,-1;    //Change to display on front

STYLE = スタイルフラグ0|スタイルフラグ1|..|スタイルフラグn

表示位置アンカーフラグ

説明

ANCHOR_DEFAULT

アンカー位置を左上に設定

ANCHOR_CENTERと同じ

ANCHOR_LEFTTOP

アンカー位置を左上に設定

ANCHOR_LEFT

アンカー位置を左に設定

縦にはセンタリング

ANCHOR_LEFTBOTTOM

アンカー位置を左に設定

縦には下辺を基準に配置

ANCHOR_TOP

アンカー位置を上辺に設定

横方向にはセンタリング

ANCHOR_CENTER

アンカー位置を画面中央にセンタリング

ANCHOR_BOTTOM

アンカー位置を底辺に設定

横方向にはセンタリング

ANCHOR_RIGHTTOP

アンカー位置を右上に設定

ANCHOR_RIGHT

アンカー位置を右に設定

縦にはセンタリング

ANCHOR_RIGHTBOTTOM

アンカー位置を右に設定

縦には下辺を基準に配置

ウィンドウ描画優先順位フラグ

説明

TOP

ウィンドウの表示優先度を最大にする。

POPUP、TOPMOSTよりは優先度は低い。

TOP同士では、PRIORITYプロパティに設定されている優先度に従います。

POPUP

ウィンドウの表示優先度を最大にします。

TOPより優先され、TOPMOSTよりは優先度は低い。

POPUP同士では、PRIORITYプロパティに設定されている優先度に従う。

ウィンドウ以外をタッチしたとき、自動的にonCloseが呼ばれる。

TOPMOST

ウィンドウの表示優先度を最大にする。

TOP、POPUPよりは優先度が高い。

TOPMOST同士では、PRIORITYプロパティに設定されている優先度に従う。

NOECLIPSE

ウィンドウが開いたときに他のウィンドウを暗くしない(TOP/POPUP時のみ有効)

ウィンドウ機能制御用フラグ

説明

NOCLOSE

クローズボタンを配置しない。

NOTITLEBARが付いているとクローズボタンは配置されない

NOMINIMIZATION

未実装

NOHELP

未実装

NOTITLEBAR

タイトルバーを表示しない。

NOFRAME

フレームを表示しない

DISABLE

機能を奪い、入力を受け付けなくする

DRAG

ドラッグによるウィンドウの移動を許可する

NOACTIVE

アクティブにならない

HIDE

ウィンドウ表示をオフにする

NOBRINGTOTOP

アクティブになった時にプライオリティを自動的にあげない。

OPENBOTTOM

背面にウィンドウを開く

STYLE = NOTITLEBAR|NOFRAME;