web-dev-qa-db-ja.com

Unity 4.6-すべての解像度でGUI要素を適切なサイズにスケーリングする方法

新しいUnity 4.6には新しいGUIが付属しています。Unityで解像度を変更すると、UIボタンは完全にスケーリングしますが、Nexus 7デバイスでテストすると、ボタンが小さすぎます。これを解決する方法はありますか?

Unity 4.6

Android - Nexus 7 2Gen

28
benLIVE

Unityの新しいGUIシステムは、「アンカー」を使用して、GUIエレメント(ボタンなど)が親コンテナーに対してどのようにスケーリングするかを制御します。

Unityには、新しい「Rect Transform」コンポーネント(アンカーが構成されている)の使用方法に関するチュートリアルビデオがあります: http://unity3d.com/learn/tutorials/modules/beginner/ui/rect-transform

チュートリアルの後半は、すべてアンカーについてです。そのページには、チュートリアルシリーズ全体へのリンクがあります。長すぎません。全部見てください。

あなたの質問に固有:

アンカーは最初のスクリーンショットで見ることができます。これらは、ボタンの左上にある4つの小さな矢印です。

現在、ボタンは左上隅にのみ固定されています。

ボタンの右端が親コンテナ内のスペースに固定されるように、2つの右アンカーを右にドラッグする必要があります。

状況に応じて、ボタンの下の端も固定されるように、下の2つの矢印を下にドラッグする必要がある場合があります。

上記でリンクしたビデオは、これらすべてを詳細にカバーしています。

最後に、フォントサイズをさまざまな解像度でうまくスケーリングするには、Ash-Bash32が以前に書いたように、参照解像度コンポーネントをUIのベースキャンバスに追加して構成する必要があります。

Update:参照解像度コンポーネントを追加する最良の方法は、UIのベースキャンバスのインスペクターウィンドウを使用することです。

1)インスペクターの下部にある[コンポーネントボタンの追加]をクリックします。

2)検索フィルターフィールドに「参照」という単語を入力します。

3)検索結果で「参照解像度」コンポーネントを選択します。

steps to add a reference resolution component in Unity

23
schmosef

現在、参照解像度はCanvas Scalerに名前が変更されています。名前の変更に加えて、Canvasの動的性のための多くの機能が追加されました。 Canvas ScalerのUnity Doc を確認し、 この記事 を見て、Canvas Scalerを使用する方法と理由の実用的な例を確認してください。また、これをより堅牢にするために、アンカーポイントを使用して良い効果を確認してください...

21
gameOne

UIを拡大縮小するには、拡大縮小するCanvasにReferenceResolutionコンポーネントを追加しました。 enter image description here

追伸ReferenceResolutionのドキュメントはありません

10
Ash-Bash32

ボタンをすべての画面と解像度で同じサイズにしたい場合は、キャンバススケーラーコンポーネントをキャンバスに追加し、画面の一致モードを次のように設定する必要があります。さまざまなサイズや解像度を目指す場合に役立ちます:

http://docs.unity3d.com/Manual/HOWTO-UIMultiResolution.html

2
Myke Dev

コードで物事のレイアウトを開始し、キャンバススケーラーを使用すると、これは巨大になり複雑になります。

最初に、0.0〜1.0の数値であることが十分にわかっている場合を除き、anchoredPositionを使用して何かを配置しないでください。 RectTransform localPositionを使用して実際のレイアウトを行い、それが親アンカーに関連していることを覚えておいてください。 (中央からグリッドをレイアウトする必要がありました)

次に、親レイアウトオブジェクトと内部UIピースにキャンバススケーラーを配置します。 1つは正しい位置にレイアウトを作成し、もう1つは要素が実際に正しく表示されるように要素のサイズを変更します。子にもスケーラー(およびそれらに触れるためのグラフィックレイキャスター)もなければ、親に頼ることはできません。

3番目に、スケーラーがある場合は、Screen.widthとheightを使用しないでください。代わりに、画面がスケーラーに設定した値と同じであると想定してください(同じものを使用するか、何をしているのかを理解してください)。画面幅は常に実際のデバイスピクセルを返しますが、網膜デバイスも同様ですが、キャンバススケーラーはこれを考慮しません。これにより、ゲームで必要な場合に実際の画面dpiを見つける方法が1つ残っている可能性があります。編集:この段落は、レイアウトを行うコードに接続されているすべての親キャンバスに適用されます。迷子のキャンバスではなく、おそらく混同することができます。キャンバスでのパフォーマンスに関する統一のガイドラインを覚えておいてください。

第4に、キャンバスにはまだ少しバグがあります。上記の作業を行っても、シーンを再度開いたりクラッシュしたりすると、キャンバスを削除して再作成するまでレンダリングされないものがあります。そうでなければ、上記は私が見つけた一般的な「ルール」です。

「モノのグリッド」を中央に配置するには、キャンバススケーラーの幅または高さの半分だけを使用することはできません。グリッドの高さを計算し、その半分だけオフセットを設定する必要があります。これを追加のヒントとして追加しました。この計算は、すべての方向で機能します。

1
Stephen J