渲染排序

Allows you to set the render order for objects to avoid transparent sort issues. JS version has been extended to allow an option to affect all children of a GameObject but removes the option to affect materials other than sharedMaterial, as that was not necessary in my project. Feel free to modify.

Notes

  • The default transparent queue is 3000.
  • Lower queues will be rendered first, higher ones later.
  • This change will affect the shared material, so you have to make separate materials for separate render queues.
  • In the editor, this change will persist across runs. However, the scripts still need to be attached to the correct objects in a build in order to work there.

c#

using UnityEngine; using System.Collections; [AddComponentMenu("Effects/SetRenderQueue")] [RequireComponent(typeof(Renderer))] public class SetRenderQueue : MonoBehaviour { public int queue = 1; public int[] queues; protected void Start() { if (!renderer || !renderer.sharedMaterial || queues == null) return; renderer.sharedMaterial.renderQueue = queue; for (int i = 0; i < queues.Length && i < renderer.sharedMaterials.Length; i++) renderer.sharedMaterials[i].renderQueue = queues[i]; } }

js

var queue : int = 3000; //3000 is default in Unity

var applyToChildren : boolean = false;

 

function Awake(){

    SetRenderQueue();

}

 

function SetRenderQueue(){

    if (!renderer || !renderer.sharedMaterial || applyToChildren){

        if(applyToChildren){

            for(var child : Transform in transform){

                child.renderer.sharedMaterial.renderQueue = queue;

            }

        } else { 

            print("No renderer found on this GameObject. Check the applyToChildren box to apply settings to children"); 

        }      

    } else {renderer.sharedMaterial.renderQueue = queue;}

}

保持每个使用的shader有自己独立的材质球,相同材质球会排序无效

 

其他参考:

*http://jakobknudsen.wordpress.com/2013/07/20/transparency-and-sorting/

*http://aras-p.info/texts/VertexShaderTnL.html

*http://wiki.unity3d.com/index.php?title=SetRenderQueue

*http://docs.unity3d.com/Manual/SL-AlphaTest.html

*http://www.visualizationlibrary.org/documentation/pag_guide_polygon_depth_sorting.html

你可能感兴趣的:(排序)