Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity開発】uGUI Imageの使い方 基本からUse Sprite Mesh,Maskable, RayCast Targetまで


Unity 2021.1.0f1 Personal(【更新】2021年4月)
Unity5.1.1f1 Personal(2015年6月)

f:id:hiyotama:20210409015334p:plain

今回はuGUIのImageについて解説していきたいと思います!
Imageは画像をUIとして表示させるuGUIの中でも頻出の重要パーツです。
ButtonやPanel、ScrollViewのバックグラウンドなど他の多くのuGUIにも使われているのでぜひこちらのページで使い方を覚えていって下さい。

Imageを表示してみる

まずは適当なpng画像をImportしましょう。
適当な画像が無い方は下の画像をお使い下さい。

f:id:hiyotama:20210409013420p:plain
hiyoko.png (128px * 128px)

f:id:hiyotama:20210409014124p:plain
Projectビューへドラッグ&ドロップでImportできます

Importした画像をInspectorビューでみると、Texture TypeがSprite (2D and UI)になっているかと思います。

f:id:hiyotama:20210409014347p:plain
Texture Type:Sprite (2D and UI)

Unityで画像を扱う際のTexture Typeは基本的にこのSpriteというタイプとなります。
ここからは画像をSpriteと呼んでいきます。

続いてImageオブジェクトを作成しましょう。
HierarchyビューのCreate > UI > Imageを選択するとCanvas、Image、EventSystemの3つのオブジェクトが生成されます。
またGameビューにImageが表示されます。

f:id:hiyotama:20210409014631p:plain
Create > UI > Imageの作成

f:id:hiyotama:20210409014932p:plain
Imageを含む複数のオブジェクトが生成される

f:id:hiyotama:20210409015021p:plain
Gameビューに真っ白のImageが表示される

ImageオブジェクトをクリックするとInspectorビューにImageコンポーネントが表示されます。
Source Imageに先ほどImportしたSpriteをドラッグ&ドロップしてみましょう。
GameビューのImageにSpriteが表示されるはずです。

f:id:hiyotama:20210409015216p:plain
Spriteをドラッグ&ドロップで登録

f:id:hiyotama:20210409015334p:plain
GameビューのImageにSpriteが表示される

Imageの大きさを変更する

続いてImageの大きさを変更してみましょう。
InspectorビューのRectTransformのWidthとHeightを変更するとサイズが変わります。

f:id:hiyotama:20210409015908p:plain
Width:200, Height:100に変更

f:id:hiyotama:20210409015928p:plain
Width:100, Height:200に変更

縦横比を元画像から変えたくない時はImageコンポーネントのPreserve Aspectにチェックを入れて下さい。

f:id:hiyotama:20210409020728p:plain

Width, Heightの小さいほうを基準に縦横比が保たれます。

f:id:hiyotama:20210409015334p:plain
Width:100, Height:200でPreserve Aspectにチェックを入れた状態

またCanvasのCanvas Scalerを変えるとImageの表示サイズも変わります。
詳しくは関連記事をご参照下さい。

hiyotama.hatenablog.com

hiyotama.hatenablog.com

最後にSpriteの元々のサイズで表示させたい場合はSet Native Sizeボタンを押して下さい。
サンプルSpriteの場合はWidth:128, Height:128に変更されます。

f:id:hiyotama:20210409020832p:plain

他のImageコンポーネント要素解説

ここまででSource Image, Preserve Aspect, Set Native Sizeについて解説しました。
残りの要素も紹介していきます。
Image Typeについては別記事にて解説していますのでこちらご参照下さい。

hiyotama.hatenablog.com

まずはColorです。
Spriteの色がColorで指定した色とSpriteの色との中間色となります。
何もSpriteを設定していない場合はColorで指定した色がSpriteの色となります。

f:id:hiyotama:20210409021459p:plain
水色を指定

A(Alpha)を変更するとImageの透明度を変えられます。

f:id:hiyotama:20210409021637p:plain
Aを0.4(40%)に変更

f:id:hiyotama:20210409021718p:plain
40%の透明度になる

続いてMaterialです。
ProjectビューのCreate > Materialで作成したMaterialを指定することができます。

f:id:hiyotama:20210409022345p:plain
Material作成

f:id:hiyotama:20210409022456p:plain
MaterialのShaderをSprite、Colorを緑色に設定

f:id:hiyotama:20210409022541p:plain
Materialを指定

f:id:hiyotama:20210409022616p:plain
MaterialがImageに反映される

続いてRayCast Targetです。
Unityではオブジェクトを確認するためにRayCastという光線を投げることがあります。
RayCast Targetのチェックを外すとRayCastのターゲットから外れます。

nopitech.com

こちらの記事のScriptを実装するとクリックした位置にRayCastを飛ばし、uGUIと重なっていたら取得します。
RayCast Targetをオン/オフして反応を確認してみて下さい。

RayCast Paddingを設定するとRaycast対象の範囲が狭まります。
例えばSpriteのサイズをWidth:128, Height:128、Raycast Paddingの項目全てに32を入力します。

f:id:hiyotama:20210409031015p:plain

するとRaycastの対象は以下の斜線の部分のみになります。

f:id:hiyotama:20210409031935p:plain

続いてMaskableについてです。
MaskableはMaskの対象となるかどうかです。
ImageにMaskをかけるには親オブジェクトとしてImageを配置しMaskコンポーネントを取り付けます。
以下の画像をImportしImageオブジェクトを作成します。

f:id:hiyotama:20210409032248p:plain

作成したらInspectorのAdd ComponentからMaskコンポーネントを取り付けます。

f:id:hiyotama:20210409032500p:plain
Maskコンポーネントを取り付ける

f:id:hiyotama:20210409032547p:plain
こんな感じ

この状態でもともとのImageオブジェクトをざぶとんのImageオブジェクトの子オブジェクトにするとMaskが機能します。

f:id:hiyotama:20210409032653p:plain
ざぶとんの子オブジェクトにする

f:id:hiyotama:20210409032722p:plain
Maskが機能する

この状態で子オブジェクトのMaskableのチェックを外すとMaskの効果が無効になります。

f:id:hiyotama:20210409015334p:plain
Mask効果が切れる

最後にUse Sprite Meshです。
uGUIが何枚も重なると動作が重くなり、この現象をオーバードローと言います。
オーバードローについてはこちらの記事をご参照下さい。

qiita.com

Use Sprite Meshにチェックを入れるとSpriteの透明部分がオーバードロー的に描画されなくなり、UIの重なりを減らすことができます。
オーバードローを確認するにはSceneビューの描画方法を変更します。
デフォルトで「Shaded」と書かれている部分をクリックし、OverDrawを選択して下さい。

f:id:hiyotama:20210409033454p:plain

先ほどのざぶとんSpriteを見てみると、Use Sprite Meshのチェックが外れていると長方形が描画されます。

f:id:hiyotama:20210409033602p:plain

Use Sprite Meshのチェックを入れるとざぶとん型に描画されます。

f:id:hiyotama:20210409033638p:plain

ちなみにSpriteのInspectorのMesh TypeがTightであることが条件です。

f:id:hiyotama:20210409033757p:plain


長くなりましたが、以上uGUIのImageについてでした。
ありがとうございました〜。