表示テーマ
Canvas Component
UIの基準解像度、拡縮、操作Playerとゲーム入力のブロックを設定します。
設定する手順
- UI用GameObjectをCanvasの子として配置し、操作Playerと表示順を選びます。
- SceneViewまたはGameViewで結果を確認します。
- 編集中のSceneまたはPrefabを保存します。
項目の説明
| 項目 | C#名 | 型 | 操作 | 定義時の初期値 | 意味 |
|---|---|---|---|---|---|
| 有効 | Enabled | bool | 読取・変更 | true | このComponentの処理を有効にします。GameObject全体のアクティブ状態とは別です。 |
| ReferenceResolution | ReferenceResolution | Vector2 | 読取・変更 | EngineContext::GetWindowSetting().gameSizeFloat | Canvasの配置と拡縮の基準となる幅・高さです。 |
| ScaleMode | ScaleMode | CanvasScaleMode | 読取・変更 | CanvasScaleMode::ScaleWithScreenSize | 基準解像度に対してUIの大きさをどう合わせるかを指定します。 |
| ScaleFactor | ScaleFactor | float | 読取・変更 | 1.0f | UI全体の拡縮倍率です。 |
| MatchWidthOrHeight | MatchWidthOrHeight | float | 読取・変更 | 0.5f | 解像度追従で幅と高さのどちらを優先するかの比率です。 |
| ソートレイヤー | SortingLayer | int | 読取・変更 | 0 | UIを並べる描画Layerです。 |
| 描画順 | Order | int | 読取・変更 | 0 | 同じLayer内の並び順です。 |
| InputBlockMode | InputBlockMode | CanvasInputBlockMode | 読取・変更 | CanvasInputBlockMode::None | ゲーム入力を止めない・UI操作frameのみ・Canvas有効中から選びます。 |
| Player | PlayerIndex | uint | 読取・変更 | 0 | 操作を割り当てるPlayer番号です。先頭は0です。 |
| 編集中に入力有効 | InputInEditMode | bool | 読取・変更 | false | Play前のUI操作を許可します。 |
| 決定後入力を受け付けない | BlockInputAfterSubmit | bool | 読取・変更 | false | 決定操作後の入力消費を設定します。 |
| キーボード入力有効 | KeyboardInputEnabled | bool | 読取・変更 | true | キーボード操作を有効にします。 |
| ゲームパッド入力有効 | GamepadInputEnabled | bool | 読取・変更 | true | ゲームパッド操作を有効にします。 |
| 左スティックを使用 | GamepadLeftStickEnabled | bool | 読取・変更 | true | 左スティックによるUI選択を有効にします。 |
| NavigationMode | NavigationMode | CanvasNavigationMode | 読取・変更 | CanvasNavigationMode::Automatic | 自動または指定した配置情報で選択先を決めます。 |
| ナビゲーションをループ | WrapNavigation | bool | 読取・変更 | true | 端の選択から反対側へ移動できるようにします。 |
| FirstSelected | FirstSelected | GameObject? | 読取・変更 | {} | 最初に選択するUI GameObjectの保存用IDです。 |
| リピート開始 | RepeatDelay | float | 読取・変更 | 0.35f | 押し続けてから連続移動が始まるまでの秒数です。 |
| リピート間隔 | RepeatInterval | float | 読取・変更 | 0.12f | 押し続けたときの連続移動の間隔です。単位は秒です。 |
| スティックしきい値 | StickThreshold | float | 読取・変更 | 0.5f | スティックを倒したと判定する閾値です。 |
Inspectorの設定と使い方
「Editor / C#」は両方から変更できる設定、「Editorのみ」は公開C# APIのない編集操作です。「Editor表示のみ」は計算結果や統計などの確認欄です。「C#のみ」は、このInspectorに編集欄のない操作です。
| 設定・操作 | 編集場所 | C#の入口 | 意味・使い方 |
|---|---|---|---|
| 有効・ソートレイヤー・描画順 | Editor / C# | Enabled / SortingLayer / Order | 子のUIをまとめる基準です。別Canvasとの並びと、Canvas配下のボタン・文字の関係を設定します。 |
| 基準解像度・拡縮 | C#のみ | ReferenceResolution / ScaleMode / ScaleFactor / MatchWidthOrHeight | 現在のInspectorは基準解像度を表示するだけです。C# APIでは基準解像度・拡縮方式・倍率・幅高さの合わせ方も扱えます。表示情報と編集欄を区別してください。 |
| Player・ゲーム入力ブロック | Editor / C# | PlayerIndex / InputBlockMode | Playerは0〜3です。入力ブロックは、なし・UI操作を消費したframe・Canvas有効中から選び、そのPlayerのゲーム入力を抑えます。UI自身の入力を止める指定ではありません。 |
| 入力有効・決定後ロック・リピート | Editor / C# | InputInEditMode / BlockInputAfterSubmit / RepeatDelay / RepeatInterval | 編集時にも操作するか、決定後の再操作を抑えるか、長押しの移動開始待ちと繰り返し間隔を指定します。C#ではInputLockedで状態を読み、BlockInputAfterSubmitをfalseへ戻すと入力ロックが解除されます。 |
| 初期UI・ナビゲーション・ループ | Editor / C# | FirstSelected / NavigationMode / WrapNavigation / TransitionTable | 最初に選択するUIと、自動の位置判定か遷移テーブルかを選びます。テーブルの縦横と各セルで選択先を定義し、端から反対側へ戻すかをループで指定します。 |
| キーボード・パッド・ボタン割当 | Editor / C# | KeyboardInputEnabled / GamepadInputEnabled / GamepadLeftStickEnabled / StickThreshold / SetKeyboardInputs / SetGamepadInputs | 選択移動・決定などへキーやパッドボタンを割り当てます。スティック使用時はしきい値で小さな入力を除きます。既存割当の取得・追加・削除APIも下表にあります。 |
初期値はEngineのComponent定義時の値で、C++表記を含みます。C#へ貼り付ける実行例ではありません。既存Sceneの保存値や既定Assetがある場合はそちらが優先されます。数値の編集範囲はInspectorで制限される場合があります。
C#から使う
操作型はCanvasです。 GameObjectから取得する基本操作はGameObjectの操作を参照してください。以下には基本プロパティだけでなく、公開関数・追加の設定API・継承した共通操作も掲載します。
設定用・関連するC#型
選択値(Enum)
| 型・各値の詳説 | 使える値 |
|---|---|
| CanvasInputAction | Down / Left / Right / Submit / Up |
| CanvasInputBlockMode | ConsumedFrame / None / WhileVisible |
| CanvasNavigationMode | Automatic / TransitionTable |
| CanvasScaleMode | ConstantPixelSize / ScaleWithScreenSize |
| GamepadButton | A / B / Back / Down / Left / LeftShoulder / LeftThumb / LeftTrigger / Right / RightShoulder / RightThumb / RightTrigger / Start / Up / X / Y |
| KeyCode | 103件。型のページで全候補を確認できます。 |
Canvas
継承する共通操作:Component
継承する共通操作:Object
使用時の注意
入力ブロックはUI操作を止める設定ではありません。割り当てたPlayerのゲーム側入力を止めます。
Play中の変更は実行用Worldへ反映します。Scene編集のUndoと実行中の値の変更は別です。保存方法は編集と実行時変更を参照してください。