facebook twitter hatena line email

「Unity/UIとSpriteの位置」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(z方向でUIを手前に持ってくる方法)
(ヒエラルキーの順序を変えて手前に)
 
(同じ利用者による、間の4版が非表示)
行13: 行13:
 
=z方向でUIを手前に持ってくる方法=
 
=z方向でUIを手前に持ってくる方法=
 
UIが含まれるCanvasの"Order In Layer"をSpriteの"Order in Layer"よりも大きくする
 
UIが含まれるCanvasの"Order In Layer"をSpriteの"Order in Layer"よりも大きくする
 +
 +
=SpriteRenderer画像より手前に、テキストを出す方法=
 +
SpriteRendererで作った画像のAdditionalSettingsのOrderInLayerが1で設定されてる場合、
 +
テキストのAddComponentにSortingGroupを追加し、OrderInLayerに2を追加。
 +
 +
*UI/Legacy/Text
 +
*UI/Text - TextMeshPro
 +
*3DObject/Text - TextMeshPro
 +
 +
上記3つで確認したが、一番下の3DObjectで作ったTextMeshProだけうまく行った。
  
 
=Canvasのscale取得=
 
=Canvasのscale取得=
行18: 行28:
 
先頭の/がないと値が変わってくるので注意。
 
先頭の/がないと値が変わってくるので注意。
 
  Debug.Log("scale=" + GameObject.Find("Canvas").transform.localScale.x);
 
  Debug.Log("scale=" + GameObject.Find("Canvas").transform.localScale.x);
 +
 +
=ヒエラルキーの順序を変える=
 +
ヒエラルキーの兄弟内で、一番下に持ってくると、その兄弟内で、一番手前になる。
 +
transform.SetAsLastSibling();
 +
ヒエラルキーの兄弟内で、一番上に持ってくると、その兄弟内で、一番奥になる。
 +
transform.SetAsFirstSibling();
 +
 +
参考:https://santerabyte.com/unity-hierarchy-set-sibling-index/

2022年8月31日 (水) 05:18時点における最新版

UIとSpriteのx,y位置を一致させる方法

UIとSprite画像をCanvasにドラッグすると位置が合わない

原因

Sprite画像は3D空間に設置され、UIはそれとは別空間に設置されるので、位置が合わなくなる

解決方法

CanvasのInspectorのCamera/RenderModeをScreenSpaceCameraに変更し、RenderCamera欄にMainCameraをドラッグする

参考

https://teratail.com/questions/92213?nli=59ba2ee1-ba78-45a4-93b4-1fa40a000247#reply-143587

z方向でUIを手前に持ってくる方法

UIが含まれるCanvasの"Order In Layer"をSpriteの"Order in Layer"よりも大きくする

SpriteRenderer画像より手前に、テキストを出す方法

SpriteRendererで作った画像のAdditionalSettingsのOrderInLayerが1で設定されてる場合、 テキストのAddComponentにSortingGroupを追加し、OrderInLayerに2を追加。

  • UI/Legacy/Text
  • UI/Text - TextMeshPro
  • 3DObject/Text - TextMeshPro

上記3つで確認したが、一番下の3DObjectで作ったTextMeshProだけうまく行った。

Canvasのscale取得

Debug.Log("scale=" + GameObject.Find("/Canvas").transform.localScale.x);

先頭の/がないと値が変わってくるので注意。

Debug.Log("scale=" + GameObject.Find("Canvas").transform.localScale.x);

ヒエラルキーの順序を変える

ヒエラルキーの兄弟内で、一番下に持ってくると、その兄弟内で、一番手前になる。

transform.SetAsLastSibling();

ヒエラルキーの兄弟内で、一番上に持ってくると、その兄弟内で、一番奥になる。

transform.SetAsFirstSibling();

参考:https://santerabyte.com/unity-hierarchy-set-sibling-index/