質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

4989閲覧

Grid Layout Groupの子オブジェクトでも画面の大きさに合わせたい | Unity UI

Yukirr4_

総合スコア728

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2020/05/27 07:59

編集2020/07/21 09:32

Grid Layout Groupコンポーネントを使ってアイテムなどのアイコン一覧を作成しています。
Instantiateによって生成されたオブジェクトをこのコンポーネントを持つオブジェクトの子オブジェクトにしています。


Image

下の画像はその例です。

黒枠はスクリーン、赤枠がGrid Layout Groupの子オブジェクトであるImageオブジェクトです。
Image


赤枠イメージのサイズを画面サイズごとに、動的に変えることができないので、
「解像度が高い/低い画面」では、イメージが遠くなりすぎたり、近くなりすぎたりしてしまいます。
理想はどの画面サイズでも「エディター内」のような感覚で表示させることです。

赤枠イメージの大きさは画面サイズによって大きくしたり小さくしたりして、
どの画面サイズでも同じように表示させたいです。
Instantiateで生成されたオブジェクトをリサイズするにはどうすればいいでしょうか。

この辺りは独自に実装させていかなければいけないのでしょうか。
もしUnityにそのような処理があるのであれば教えていただきたいです。
どなたか回答お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

Cell SizeSpacingの値を画面の大きさ(Screen.height, Screen.width)に応じて変更するようにしました。

投稿2020/09/07 10:50

編集2020/09/07 10:52
Yukirr4_

総合スコア728

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Canvas Scaler コンポーネントのプロパティ UI Scale Mode を Scale With Screen Size に設定したらいいんじゃないですか?
unity ui マルチ 解像度 でググるとこの辺の話が出てきますよ。

【追記】
「Canvas Scaler コンポーネントのプロパティ UI Scale Mode を Scale With Screen Size に設定している」とのことですが、それをしていれば以下のような挙動になり、説明のような挙動にはならないと思います。

イメージ説明

既にいろいろなものが追加されて複雑に影響しあっている制作中の画面をいじるのではなく、一度何もないシーンに UI を配置してみて、どの設定が何に影響しているのかを確かめるとよいと思います。

投稿2020/07/20 21:02

編集2020/07/21 08:47
bboydaisuke

総合スコア5308

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yukirr4_

2020/07/21 08:18

すでにScale With Screen Sizeに変更されています。 Grid Layout Groupは端末の解像度が何であれ、上の画像のように、 Cell Sizeで設定した大きさで表示されてしまいます。 やはりCell Sizeの値を、画面の大きさによって計算する以外やり方はないのでしょうか。
bboydaisuke

2020/07/21 08:47

回答に追記しました。
Yukirr4_

2020/07/21 08:57 編集

わざわざ試していただいてありがとうございます。 今Unityを触れる状況ではないのですが、もしかしてSpacingが影響しているとは思いますか?
bboydaisuke

2020/07/21 08:58 編集

> Spacingが影響しているとは思いますか? 思いません。
Yukirr4_

2020/07/21 09:30

すみません。 一番大事なことを言い忘れていました。 要素となる子オブジェクトをプレハブ化して起動時にInstantiate()していました。 InstantiateされたUIオブジェクトは画面の解像度を変更してもオブジェクトの大きさと間隔は変わりませんでした。
bboydaisuke

2020/07/21 09:31

まあちょっと家に帰るなりして自分でUnityを触って調べてみてくださいな。思いつきを色々書いて私に調べて欲しいのでしょうが、そこまではできません。
Yukirr4_

2020/07/21 09:33

そうですよね。自分勝手ですみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問