「Unity/UIとSpriteの位置」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「=UIとSpriteの位置を一致させる方法= UIとSprite画像をCanvasにドラッグすると位置が合わない ==原因== Sprite画像は3D空間に設置され...」) |
(→ヒエラルキーの順序を変えて手前に) |
||
(同じ利用者による、間の7版が非表示) | |||
行1: | 行1: | ||
− | = | + | =UIとSpriteのx,y位置を一致させる方法= |
UIとSprite画像をCanvasにドラッグすると位置が合わない | UIとSprite画像をCanvasにドラッグすると位置が合わない | ||
行6: | 行6: | ||
==解決方法== | ==解決方法== | ||
− | CanvasのInspectorのCamera/ | + | CanvasのInspectorのCamera/RenderModeをScreenSpaceCameraに変更し、RenderCamera欄にMainCameraをドラッグする |
==参考== | ==参考== | ||
https://teratail.com/questions/92213?nli=59ba2ee1-ba78-45a4-93b4-1fa40a000247#reply-143587 | 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/ |
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/