[Unity] 重なり合うボタンを処理する
全てのボタンが同じtransformの子になっている前提で、
重なり合っているボタンをこんな風に処理したい
一番簡単なのは、OnClick()で
button.gameObject.transform.SetAsFirstSibling();
のように最背面に移動してしまうことなのですが、これだと次のボタンが押せるようになる代わりに表示も背面に隠れてしまいます。
そこで、
for (int i = 0; i < transform.childCount; ++i)
{
UnityEngine.UI.Image img = _transform.gameObject.GetComponent<UnityEngine.UI.Image>();
if (transform.GetChild(i).Equals(_transform))
{
img.color = Color.red;
img.raycastTarget = false;
transform.GetChild(i).SetAsLastSibling(); // 今回選択したものを最前面に
}
else if (!img.raycastTarget) // 前回最前面だったものを最背面にする
{
img.color = Color.white;
img.raycastTarget = true;
transform.GetChild(i).transform.SetAsFirstSibling();
}
}
のように、今回選択したものは raycastTarget をfalseにして押せなくしつつ最前面に、前回選択していたものはraycastTarget を元に戻しつつ最背面に送ることで、選択したものを最前面に残しつつ、後ろのボタンを押せるようになります。
Author And Source
この問題について([Unity] 重なり合うボタンを処理する), 我々は、より多くの情報をここで見つけました https://qiita.com/ELIXIR/items/89ed21e24a09447ab4fb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .