新規記事の投稿を行うことで、非表示にすることが可能です。
2021年10月05日
【Unity】スクリプトを使わず、簡単に3D/2Dで画面比率(アスペクト比)を固定したい(レスポンシブUIの応用)
はじめに
久々の更新です!
いえい!
というわけで。
「画面比率を固定したい!」
そんな時があると思います。
2D、3D関わらず。
そしてインターネットを泳いでいたのですが、
自分の知っている比率固定を紹介している方が全然いなかったのでここで紹介しておきます。
皆がみんなスクリプトで固定しようとしているんですが、
何か意味があるんでしょうか……?
今回の方法はノーコーディングですよ!
↓これが今回の完成図です。

いい感じに視界もUIも比率固定できていますね
では早速始めていきます!
解像度決めとシーンのセットアップ
まずはターゲットとなる画面解像度を決めます。
今回は横1920、高さ1080のFHDでいきたいと思います。
そしたらシーンのセットアップ。
右クリック > UI > Canvas から Canvasを作成。
これで準備完了です。
Canvas Scalerの設定
- 「UI Scale Mode」を「Scale With Screen Size」に変更
- 「Reference Resolusion」をターゲット解像度に変更(ここでは1920x1080)
- 「Screen Match Mode」を「Expand」に変更
変更後
実際に固定
Canvasの子に空のオブジェクトを作成して、WidthとHeightにそれぞれターゲット解像度を入力します。
オブジェクトの名前は何でもいいですが、ここでは「Aspect Controller」としておきます。
子オブジェクト作ってWidthとHeightを指定
あとは「Aspect Controller」の子オブジェクトにUIを追加していくだけです!

範囲外を黒背景にする
これは簡単です。
Imageを作成して、Aspect Controllerの後ろに目一杯引き延ばして配置します。
確実にAspect Controllerの後ろ(ヒエラルキーでいえば上)にくるようにしてください。
背景が黒くなった
なんなら好きな色に変更できますね!
カメラの視界を表示する
お次はカメラの視界を表示していきます。
どこでもいいのでAssetsフォルダ内にRender Textureを作成してください。
名前は何でもいいです。
ここでは「Main Render Texture」にしておきます。
RenderTexture を作成
RenderTextureのSizeに解像度を入力します。
解像度を入力
AspectControllerの子にRawImageを作成し、目一杯に引き延ばす or Width/Heightに解像度を入力します。
今回は後者で。
RawImage作成
RawImageのWidth/Heightに解像度を入力
RawImageの「Texture」、カメラの「TargetTexture」に
それぞれ作成したRenderTextureを割り当てます。
RawImageの「Texture」にRenderTextureを割り当てる
カメラの「TargetTexture」にRenderTextureを割り当てる
警告の非表示
なんか警告出てる
このままだと、カメラのレンダリング結果をそのままRenderTextureに出力しているので、
「画面を表示してるカメラがないよ!」
と警告されています。
特に支障はないので、Gameタブを右クリックして
「Warn if No Cameras Rendering」の項目のチェックを外します。
チェックを外して警告を消す
完成
ぐにぐに動かしても比率の変わらないカメラ視界・UIの完成です!

問題点
カメラのレンダリング結果を画像に出力&表示しているので、
タップやクリックの座標がズレます。
ScreenPointToRay()なんかが使えません!。
……ので、スクリプトで補正することをお勧めします。
補正に関しては以下のリンクを参考にしてください。
【Unity】低解像度に設定したRenderTextureを使いつつ、クリックした位置にキャラクターを動かす - テラシュールブログ
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
2021年01月11日
2020年11月07日
【unityエラー】ユニティちゃんSSUに同梱されてるUnityChanSpringBone-release-1.1で多量のエラーでた
エラー出る...
ビルドが出来ねぇ!!
ユニティちゃんSunny Side Up(HDRP版) をDLして、HDRP用だけど通常プロジェクトに持ってきた。
色々設定していい感じ。
エディタのプレイモードでも問題なく「SpringBone」は動作していた。
いざビルド
とりあえず一旦書き出してみようと、ビルド…。

(一部他のエラーもあるけど)UnityChanSpringBoneで50以上のエラーだ。
笑うしかねぇ。
この「UnityChanSpringBone」はunity公式がこれ単体で発表しているものなので正直言ってユニティちゃんSSUに深い関わりがある訳ではないと思う。
続きを読む
2020年10月09日
【Blender】カーブで髪の毛をモデリングするチュートリアル動画
タイトルそのままの内容です。
モデリングソフトであるBlenderで
髪をモデリングするお手頃な方法の動画を見つけたので紹介。
一からちまちま作るより、かなり効率がいいと思います。
ノードを使ったレンダリングまでしてくれるのでサンプルとしてはかなりありがたい…。
モデリングソフトであるBlenderで
髪をモデリングするお手頃な方法の動画を見つけたので紹介。
一からちまちま作るより、かなり効率がいいと思います。
ノードを使ったレンダリングまでしてくれるのでサンプルとしてはかなりありがたい…。
2020年07月30日
【blender2.8】3Dカーソルが動いて選択ができなくなった話
タイトルそのまんまで、ある日Blenderを触っているとマウスクリックによる選択操作が効かなくなりました。
一大事だったので色々とネットを泳いでみても解決に繋がりそうな情報はなく、ダメ。
色々といじった結果......というか、
調べていたらハッと気づいて試してみたら直りました。
「選択操作が効かなくなる」という現象は
環境によっても違うと思います。
私の場合、
ポーズモードでボーンが左クリックで選択できない
という非常事態に陥りました。
これを解決(?)したメモ記事です。
超が付くほど単純でした。
続きを読む
一大事だったので色々とネットを泳いでみても解決に繋がりそうな情報はなく、ダメ。
色々といじった結果......というか、
調べていたらハッと気づいて試してみたら直りました。
前提として
「選択操作が効かなくなる」という現象は
環境によっても違うと思います。
私の場合、
ポーズモードでボーンが左クリックで選択できない
という非常事態に陥りました。
これを解決(?)したメモ記事です。
超が付くほど単純でした。
続きを読む
2020年04月12日
【unity】2019.3.5f1でポストプロセス(PP)v2インストールしたらエラーでた
なんでかは分かりませんが、
「post-processing stack v2」を
インストールしたら
次のエラーが出ました。
どん
続きを読む
「post-processing stack v2」を
インストールしたら
次のエラーが出ました。
エラー内容
どん
Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll' failed
続きを読む
2020年04月08日
2020年03月17日
【Unity】ViewportPointToRay()とはなんなのか
ViewportPointToRay() とは
ViewportPointToRay()とは、正規化されたビューポート座標を
もとにRayを計算する関数です。
説明終わり。
分かる訳がない
公式リファレンスにはそんな感じで記述されていますが、
正直、何がなんだか分かりません。
まずビューポート座標が曖昧です...。
そこから知る必要がありそうです。
ビューポート座標
調べてみましたが、どうやらUnity専用の用語?っぽいです。
複数の
カメラの視界を基準にした座標系らしいです。
カメラ左下の座標が(0, 0)、右上が(1, 1)となるようです。

なので、画面中央を指定する場合のビューポート座標は(0.5, 0.5)となります。
結論、ViewportPointToRay() とは
画面左下の座標を(0, 0)、右上を(1, 1)としたときの
座標に合わせて、その座標からRayを計算する関数だということです。
使用例 画面中央からRayを飛ばしてみる
void Update () {
RaycastHit hit;
var ray = Camera.main.ViewportPointToRay(new Vector2(0, 0));
if (Physics.Raycast(ray, out hit)) {
// ray処理
}
}
以上です!
閲覧ありがとうございました。
2019年08月17日
【活動休止?】
いきなり本題
タイトル通りですね。
プロフィールを見てもらうと一目瞭然ですが、
僕はまだ高校生なのです。
そしてついにやってきました!
今年は受験です!
なので、ブログ・You Tube共に活動が極端に少なくなります。
というか、今年が受験なので既にセーブしてました。
ブログの方は更新しない、という事では無いですが、
あと半年で数記事更新するのかどうか…。
って感じですかね。
You Tubeは完全に休止しようかと思います。
だから、You Tubeの次の更新は来年!
身勝手ですみません。
ご迷惑お掛けします m(_ _)m
ですが、
ブログ、You Tubeのコメント・TwitterのDMなど
には返信が可能だと思います。
なので分からない事の質問や
実装するシステムで躓いているなど、
どんどんコメント等してください!
では、また来年!