アフィリエイト広告を利用しています

現在ははてなブログで投稿しています!

広告

posted by fanblog

2021年10月05日

【Unity】スクリプトを使わず、簡単に3D/2Dで画面比率(アスペクト比)を固定したい(レスポンシブUIの応用)

はじめに

久々の更新です!
いえい!

というわけで。


「画面比率を固定したい!」


そんな時があると思います。

2D、3D関わらず。


そしてインターネットを泳いでいたのですが、
自分の知っている比率固定を紹介している方が全然いなかったのでここで紹介しておきます。

皆がみんなスクリプトで固定しようとしているんですが、
何か意味があるんでしょうか……?

今回の方法はノーコーディングですよ!

↓これが今回の完成図です。
画面比率固定_最終動作テスト.gif
いい感じに視界もUIも比率固定できていますね



では早速始めていきます!
解像度決めとシーンのセットアップ


まずはターゲットとなる画面解像度を決めます。

今回は横1920、高さ1080のFHDでいきたいと思います。

そしたらシーンのセットアップ。

画面比率固定_シーンのセットアップ.PNG



右クリック > UI > Canvas から Canvasを作成。


画面比率固定_Canvasの作成.PNG


これで準備完了です。


画面比率固定_Canvasのセットアップ完了.PNG


Canvas Scalerの設定


  • 「UI Scale Mode」を「Scale With Screen Size」に変更
  • 「Reference Resolusion」をターゲット解像度に変更(ここでは1920x1080)
  • 「Screen Match Mode」を「Expand」に変更


画面比率固定_CanvasScalerの設定.PNG
変更後


実際に固定


Canvasの子に空のオブジェクトを作成して、WidthとHeightにそれぞれターゲット解像度を入力します。
オブジェクトの名前は何でもいいですが、ここでは「Aspect Controller」としておきます。

画面比率固定_固定.PNG
子オブジェクト作ってWidthとHeightを指定


あとは「Aspect Controller」の子オブジェクトにUIを追加していくだけです!

画面比率固定_動作テスト.gif


範囲外を黒背景にする


これは簡単です。

Imageを作成して、Aspect Controllerの後ろに目一杯引き延ばして配置します。

確実にAspect Controllerの後ろ(ヒエラルキーでいえば上)にくるようにしてください。

画面比率固定_黒背景.PNG
背景が黒くなった


なんなら好きな色に変更できますね!

カメラの視界を表示する


お次はカメラの視界を表示していきます。

どこでもいいのでAssetsフォルダ内にRender Textureを作成してください。
名前は何でもいいです。
ここでは「Main Render Texture」にしておきます。

画面比率固定_RT作成.PNG
RenderTexture を作成


RenderTextureのSizeに解像度を入力します。

画面比率固定_RTサイズ設定.PNG
解像度を入力


AspectControllerの子にRawImageを作成し、目一杯に引き延ばす or Width/Heightに解像度を入力します。
今回は後者で。

画面比率固定_AspectControllerの子にRawImageを作成.PNG
RawImage作成


画面比率固定_RawImage設定.PNG
RawImageのWidth/Heightに解像度を入力


RawImageの「Texture」、カメラの「TargetTexture」に
それぞれ作成したRenderTextureを割り当てます。

画面比率固定_RawImageにRTセット.PNG
RawImageの「Texture」にRenderTextureを割り当てる


画面比率固定_MainCameraにRTセット.PNG
カメラの「TargetTexture」にRenderTextureを割り当てる


警告の非表示


画面比率固定_カメラなし警告.PNG
なんか警告出てる



このままだと、カメラのレンダリング結果をそのままRenderTextureに出力しているので、

「画面を表示してるカメラがないよ!」

と警告されています。

特に支障はないので、Gameタブを右クリックして
「Warn if No Cameras Rendering」の項目のチェックを外し
ます。

画面比率固定_カメラなし警告解除.PNG
チェックを外して警告を消す


完成


ぐにぐに動かしても比率の変わらないカメラ視界・UIの完成です!

画面比率固定_最終動作テスト.gif


問題点


カメラのレンダリング結果を画像に出力&表示しているので、
タップやクリックの座標がズレます

ScreenPointToRay()なんかが使えません!

……ので、スクリプトで補正することをお勧めします。

補正に関しては以下のリンクを参考にしてください。


【Unity】低解像度に設定したRenderTextureを使いつつ、クリックした位置にキャラクターを動かす - テラシュールブログ
投稿コメント
* 気軽にコメントくださいー *

※ ブログに表示されるのは、主の承認が必要なので時間がかかります!
  コメントに気づかない場合もありますので、返信が遅れる場合も...

お名前:

メールアドレス:


ホームページアドレス:

コメント: 必須項目

この記事へのトラックバックURL
https://fanblogs.jp/tb/11014156
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索
プロフィール
ピノまっちゃさんの画像
ピノまっちゃ
どうも、ピノまっちゃ(PinoMatcha)です!
ゲーム制作をちょこまか頑張ってる大学生で、プログラミングも独学です。
ですので実力は全然ですが、最善を尽くして頑張っております!

名前の由来はピノの抹茶味が好きだからじゃなくて、ピノと抹茶が好きだからです!


更新 : 不定期!
プロフィール
新着記事
最新のコメント
更新事項
2018/8/2 定期更新への変更の報告に追記しました。

2018/5/10 「続きを読む」機能の使い方がやっと分かりました。

2017/9/14 プレイヤーを動かす:関数の解説の一部を書き直しました。

2017/8/1 【unity5】カメラ移動・回転させる方法に多数の画像を追加しました。
カテゴリーアーカイブ
YouTubeチャンネル
Fantiaリンク
よければ応援お願いします!

Pixivアカウント
現在、調整中です…
×

この広告は30日以上新しい記事の更新がないブログに表示されております。