Quantcast
Channel: Questions in topic: "renderqueue"
Viewing all articles
Browse latest Browse all 161

Setting renderQueue doesn't appear to change draw order

$
0
0
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

Viewing all articles
Browse latest Browse all 161

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>