このセクションでは、Canvas やその他の要素と相対的に UI 要素を配置する方法を見ていきます。このセクションを読んでいる間に試したくなったら、メニューから GameObject -> UI -> Image を使用して Image を作成することができます。
すべての UI 要素はレイアウトを行うために矩形として表現されます。この矩形はツールバーの Rect Tool を用いて Scene View で操作することができます。Rect Tool は Unity の 2D 機能と UI の両方で使用され、実際には 3D オブジェクトでも同様に使用することができます。
Rect Tool を用いれば、周囲の UI 要素を移動させ、大きさを変更し、回転するなどのことをすべて行うことができます。UI 要素を一度選択すれば、矩形内のどこかをクリックしてドラッグすれば移動させることができます。端か角をクリックして、ドラッグすれば大きさを変更することができます。マウスカーソルが回転シンボルを表示するまでカーソルを角から離せば要素を回転させることもできます。シンボルが表示されたら回転させるためにどちらの方向にでもクリックして、ドラッグすることができます。
他のツール同様に、Rect Tool はツールバーで設定されている現在のピボットモードとスペースを使用します。UI を操作するときは、普段は Pivot と Local を設定するとよいでしょう。
Rect Transform は、一般的な Transform コンポーネントの代わりにすべての UI 要素で使用される新しいトランスフォームコンポーネントです。
Rect Transform は一般的な Transform と同様に位置(position)、回転(rotation)、スケール(scale)を有していますが、矩形の寸法を特定するために幅(width)と高さ(height) も有しています。
Rect Tool がオブジェクトのサイズ変更に使用される場合、2D システムの Sprite と 3D オブジェクトのために、通常はオブジェクトのローカル scale を変更します。しかし、Rect Transform コンポーネントのアタッチされたオブジェクトの場合、ローカル scale は変更しないままで width と height を変更します。このリサイジングはフォントサイズ、スライスされた画像の境界線などに影響を与えません。
回転(rotation)、サイズ(size)、スケール(scale) の修正はピボットの周囲で起こりますので、ピボットの位置は回転、リサイジング、スケーリングの結果に影響します。ツールバーの Pivot ボタンが Pivot モードに設定されている場合、Rect Transform のピボットは Scene View で移動させることができます。
Rect Transform には anchors というレイアウトの概念があります。アンカーは 4 つの小さな三角形のハンドルとして Scene View に表示され、アンカーの情報はインスペクターにも表示されます。
Rect Transform の親も Rect Transform であれば、子の Rect Transform はさまざまな方法で親の Rect Transform に固定することができます。例えば、子は親の中心か、角の一つに固定することができます。
固定(anchoring)は、親の width か height と共に子を引き伸ばすことを可能にします。矩形のそれぞれの隅は対応するアンカーに対して固定のオフセットを有します。すなわち、矩形の左上隅は左上のアンカーに対して固定のオフセットを有する、といったものです。このように、矩形の異なる隅を親矩形の異なる点に固定することができます。
アンカーの位置は親矩形の width と height を分数(パーセント)で定義したものです。0.0(0%) は左と下端のどちらかに、0.5(50%)は中間に、そして 1.0(100%) は右と上端のどちらかに対応しています。しかし、アンカーは端や中間に制限されるものではありません。それらは親矩形内のいかなるポイントにも固定することができます。
それぞれのアンカーを個別にドラッグすることができます。もしそれらが一緒にあれば、それらの中間をクリックしてドラッグすることで一緒にドラッグすることができます。アンカーをドラッグしている間に Shift キーを押したままにすれば、矩形の対応する隅はアンカーとともに動きます。
アンカーハンドルの便利な特徴は、正確な位置決めを可能とするために、ハンドルが自動的に兄弟矩形のアンカーに対してスナップすることです。
インスペクターでは、Anchor Preset ボタンが Rect Transform コンポーネントの左上の隅に見当たります。ボタンをクリックすることで、アンカープリセットが表示されます。ここからすぐに、いくつかの最も一般的なアンカーオプションから一つを選択することができます。あなたは UI 要素を親の端、または中間に固定するか、親のサイズに伴って引き伸ばすことができます。水平と垂直の固定は独立しています。
Anchor Presets ボタンは、選択されているものが一つであれば、現在選択されているプリセットオプションを表示します。水平、または垂直軸上のアンカーがプリセットのいずれとも異なる場所に設定されている場合、カスタムオプションが表示されます。
まだアンカー番号フィールドが表示されていない場合は、Anchor 拡張矢印をクリックしてフィールドを表示することができます。Anchor Min は Scene ビューで左下のアンカーハンドルに対応し、Anchor Max は右上のアンカーハンドルに対応しています。
矩形の位置フィールドは、アンカーが一緒になっているか(fixed width と height を生成する)分離されているか(矩形が親矩形とともに伸縮する原因となる)に応じて異なった表示をされます。
すべてのアンカーハンドルが一緒の場合、フィールドは Pos X、Pos Y、Width、Height を表示します。Pos X と Pos Y の値はアンカーに対して相対的なピボットの位置を示します。
アンカーが分離されている場合、フィールドは Left、Right、Top、Bottom を部分的、または完全に変更することができます。これらのフィールドはアンカーによって定義される矩形内のパディングを定義します。Left と Right フィールドは、アンカーが水平に分離されている場合に、Top と Bottom フィールドは垂直に分離されている場合に使用されます。
アンカーとピボットフィールドのどちらかの値を変更すると、通常は所定の位置に矩形を留めるために位置の打ち消し調整をすることに注意してください。このことが望ましくないのであれば、インスペクターの R ボタンを用いて Raw エディットモード を使用します。これにより、結果的に、他の値の変更なしにアンカーとピボットの値が変更可能になります。位置とサイズがアンカーとピボットの値に基づいているため、矩形を視覚的に移動したりサイズ変更したように表示することができます。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.