バリアントプレハブとか使ってるとなぜかレイヤーの順番がうまく変わらないことがあるので、無理やり変えてみた。
同じ階層限定。
public class SetLayerOrder : MonoBehaviour
{
enum Order
{
Front,
Back,
}
[SerializeField]
private Order order;
[SerializeField]
private Transform targetObject;
private void Start()
{
int myIndex = this.transform.GetSiblingIndex();
int targetIndex = this.targetObject.GetSiblingIndex();
if (myIndex < targetIndex && this.order == Order.Back) --targetIndex;
else if (myIndex > targetIndex && this.order == Order.Front) ++targetIndex;
this.transform.SetSiblingIndex(targetIndex);
}
}