This seems like such a simple thing, judging by the Unity script reference and examples here, but I can't get render queues (set in the material) to work at all. I've set up a very simple scene with two boxes and a camera, one box behind the other (see picture).
![Render test screenshot][1]
Then, I added a script that changes the render queue of the two materials, flipping the queue order. I do a debug afterwards which verifies that the renderQueue value has been changed. The only problem is that the draw order doesn't change - the nearer cube is always rendered over the far cube.
I've included my code below. As you can see from the comments, I tried setting the renderQueue in the renderer.material, sharedMaterial, and the material asset directly, and in all cases the renderQueue value changes but the render order does not. What am I missing here?
using UnityEngine;
using System.Collections;
public class ChangeMaterialQueueOrder : MonoBehaviour {
public GameObject go1;
public GameObject go2;
public Material m1;
public Material m2;
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.F))
{
Debug.Log("Changing 1 to back");
//go1.renderer.sharedMaterial.renderQueue = 1001;
//go2.renderer.sharedMaterial.renderQueue = 1002;
//go1.renderer.material.renderQueue = 1001;
//go2.renderer.material.renderQueue = 1002;
m1.renderQueue = 1001;
m2.renderQueue = 1002;
//Debug.Log("Render queue changed; go1 renderqueue now " + go1.renderer.material.renderQueue);
Debug.Log("Render queue changed; m1 renderqueue now " + m1.renderQueue);
}
if (Input.GetKeyDown(KeyCode.G))
{
Debug.Log("Changing 1 to front");
//go1.renderer.sharedMaterial.renderQueue = 1002;
//go2.renderer.sharedMaterial.renderQueue = 1001;
//go1.renderer.material.renderQueue = 1002;
//go2.renderer.material.renderQueue = 1001;
m1.renderQueue = 1002;
m2.renderQueue = 1001;
//Debug.Log("Render queue changed; go1 renderqueue now " + go1.renderer.material.renderQueue);
Debug.Log("Render queue changed; m1 renderqueue now " + m1.renderQueue);
}
}
}
P.S.: I'm using Unity Pro.
[1]: http://fragileearthstudios.com/wp-content/uploads/2011/09/render_queue_screenshot.png
↧