【问题标题】:Set 3d object always back with Render Queue?始终使用渲染队列设置 3d 对象?
【发布时间】:2020-12-25 01:22:14
【问题描述】:

我添加了一个位置为 (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

没用。

这是纹理:

【问题讨论】:

  • 球体还需要具有不写入深度缓冲区的材质 (ZWrite Off)。

标签: c# unity3d shader render depth-buffer


【解决方案1】:

您可以尝试将精灵本身向后移动,在检查器中将 Transform position.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;
    }
}

您还可以尝试将精灵置于层次结构中的另一个之上。

【讨论】:

    猜你喜欢
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2019-01-14
    • 2021-11-14
    • 1970-01-01
    • 2011-11-04
    相关资源
    最近更新 更多