「PlayerLocalUIで、はみ出させないやつ」の詳細
動機&概要
オブジェクトのレイアウトやサイズを固定値で行った場合、画面外にはみ出る場合があります。
通常このような場合、CanvasScalerの設定を変更し対応します。
しかしCCK2.30.1現在、PlayerLocalUIのCanvasScalerの設定を変更することができません。
本アセットは、CanvasScalerのScreenMatchModeをExpandとした場合の挙動をClusterScriptにてエミュレートし、この問題に対応します。
仕組み
ClusterScriptのPlayerScriptにて動作します(非ベータ)。以下のような流れです。
- 画面の状態(アスペクト比と実際のサイズ)を確認する。
- 確認結果を元にスケールを変更し、画面内に収まるようにする。
詳細は同梱のサンプルシーンを確認してください。
必要な設定&カスタマイズ
サンプルシーンを改造して使っていただくのが手っ取り早くオススメです。
以下は、サンプルシーンに設定済みの項目の解説です。
PlayerLocalObjectReferenceListの設定
ClusterScript(PlayerScript)にて参照するオブジェクトを設定する必要があります。
設定する項目は2つです。画像を参照してください。
-
Target
このオブジェクトのスケールが変更されます。
画面に表示させたいUIは、このオブジェクト以下に配置してください。
IDを変更したい場合は、後述するスクリプトの変更が必要です。 -
Scaler
画面の状態を把握するためのオブジェクトです。
設定が細かいため、同梱のプレハブを設置し設定することをオススメします。
IDを変更したい場合は、後述するスクリプトの変更が必要です。
表示するコンテンツのサイズの設定
同梱のサンプルとプレハブでは「1024x768」のサイズのコンテンツを表示する設定になっています。
このサイズを「1920x1080」などに変更することができます。画像を参照してください。
Scaler以下のContentオブジェクトのRectTransformの値「Pos X」「Pos Y」に、コンテンツのサイズを指定してください。
画像では「1024x768」が指定されています。
スクリプトの設定
「PlayerLocalObjectReferenceListの設定」にてIDを変更している場合に設定が必要です。ヒエラルキーの名前を変更しているだけであれば不要です。
例)「Target」を「UIRoot」、「Scaler」を「ScaleCheck」と変更した場合。
「サンプル_Expand.js」の下部あたりにある
const expandCanvasScaler = CanvasScalerExpand();
を
const expandCanvasScaler = CanvasScalerExpand("UIRoot", "ScaleCheck");
としてください。
CanvasScalerExpand
のデフォルト引数を変更してもOKです。お好きなようにしてください。
おわり
よきPlayerScriptライフを!!!
Discussion