Всегда возвращать 3d-объект в очередь рендеринга?

#c# #unity3d #shader #render #depth-buffer

#c# #unity3d #шейдер #рендерить #глубина-буфер

Вопрос:

Я добавил объект куба с позицией (0, 0, 0) и объект сферы с позицией (0,5, 0, -3). Я добавил текстуры и материалы.

Настройки

Я хочу переместить сферу позади всех других объектов с помощью очереди рендеринга или другого решения.

Я добавил этот скрипт в сферу. Это не работает:

 using UnityEngine;
public class RenderQueueTest : MonoBehaviour
{
    public int renderQueuePosition = -1;
    void Start()
    {
        GetComponent<Renderer>().material.renderQueue = renderQueuePosition;
    }
}
  

Я также попытался изменить очередь рендеринга материала сферы в инспекторе.

Очередь рендеринга материала сферы по умолчанию равна: 2000

Я изменил его на: 1999

Не работает.

Вот текстуры:

Текстура 1

Текстура 2

Комментарии:

1. Сфера также должна иметь материал, который не записывается в буфер глубины ( ZWrite Off ).

Ответ №1:

Что вы могли бы сделать, это попытаться переместить сам спрайт обратно, установить позицию преобразования.установите значение y на -0.1 в инспекторе или сделайте это с помощью скрипта, подобного этому:

 using UnityEngine;

public class SendBackScrpt: MonoBehaviour
{
    private Vector3 sendBack = new Vector3(0, -0.1f, 0);

    private void Start()
    {
       Vector3 prevPos = transform.position;
       transform.position = prevPos   sendBack;
    }
}
  

что вы также могли бы попробовать, так это поместить спрайт выше другого в иерархии.