如何在Unity中更改选定图像的渲染顺序?

问题描述 投票:0回答:1

我有一个网格布局组,下面有多个图像。我想要实现的是,每当我选择(单击并开始拖动)一个对象时,我希望它的渲染顺序优先,这样由于层次结构,它不会落后于其兄弟姐妹。我如何在 Unity 中实现这一目标?

这是我的代码:

using UnityEngine;
using UnityEngine.EventSystems;

public class DragAndDrop : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler
{
    private RectTransform selfRectTransform;
    private Canvas canvas;
    private int originalSortingOrder;

    private void Start()
    {
        selfRectTransform = GetComponent<RectTransform>();
        canvas = GetComponentInParent<Canvas>();
        originalSortingOrder = canvas.sortingOrder;
    }

    public void OnBeginDrag(PointerEventData eventData)
    {
        // Increase the canvas sorting order to render the object above others
        canvas.sortingOrder++;
    }

    public void OnDrag(PointerEventData eventData)
    {
        selfRectTransform.anchoredPosition += eventData.delta;
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        // Restore the original canvas sorting order
        canvas.sortingOrder = originalSortingOrder;
    }
}

在编辑器的图层部分中设置顺序设置。

unity-game-engine unityscript
1个回答
0
投票

我认为你走在正确的轨道上,我认为缺少的可能是在你的OnBeginDrag函数中,我认为你应该使用originalSortingOrder + 1而不是canvas.sortingOrder ++,这是为了更准确地处理它

canvas.sortingOrder = originalSortingOrder + 1;
© www.soinside.com 2019 - 2024. All rights reserved.