🔲

「PlayerLocalUIで、はみ出させないやつ」の詳細

に公開

アセットの配布先はこちらです。

動機&概要

オブジェクトのレイアウトやサイズを固定値で行った場合、画面外にはみ出る場合があります。
通常このような場合、CanvasScalerの設定を変更し対応します。
しかしCCK2.30.1現在、PlayerLocalUIのCanvasScalerの設定を変更することができません。

本アセットは、CanvasScalerのScreenMatchModeをExpandとした場合の挙動をClusterScriptにてエミュレートし、この問題に対応します。

アセットの配布先はこちらです。

仕組み

ClusterScriptのPlayerScriptにて動作します(非ベータ)。以下のような流れです。

  1. 画面の状態(アスペクト比と実際のサイズ)を確認する。
  2. 確認結果を元にスケールを変更し、画面内に収まるようにする。

詳細は同梱のサンプルシーンを確認してください。

必要な設定&カスタマイズ

サンプルシーンを改造して使っていただくのが手っ取り早くオススメです。
以下は、サンプルシーンに設定済みの項目の解説です。

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