zoukankan      html  css  js  c++  java
  • Drawing-Order-Of-meshes-and-sprites

    Sprite 和 Mesh Render 共存

        [CanEditMultipleObjects]
    [CustomEditor(typeof(MeshRenderer))]
    public class MeshRendererEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
    
            serializedObject.Update();
            
            SerializedProperty sortingLayerID = serializedObject.FindProperty("m_SortingLayerID");
            
            SerializedProperty sortingOrder = serializedObject.FindProperty("m_SortingOrder");
            
            //MeshRenderer renderer = target as MeshRenderer;
            Rect firstHoriz = EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginChangeCheck();
            EditorGUI.BeginProperty(firstHoriz, GUIContent.none, sortingLayerID);
            
            string[] layerNames = GetSortingLayerNames();
            int[] layerID = GetSortingLayerUniqueIDs();
            
            int selected = -1;
            int sID = sortingLayerID.intValue;
            for (int i = 0; i < layerID.Length; i++)
                if (sID == layerID[i])
                    selected = i;
            if (selected == -1)
                for (int i = 0; i < layerID.Length; i++)
                    if (layerID[i] == 0)
                        selected = i;
            selected = EditorGUILayout.Popup("Sorting Layer", selected, layerNames);
            sortingLayerID.intValue = layerID[selected];
            EditorGUI.EndProperty();
            EditorGUILayout.EndHorizontal();
    
            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(sortingOrder, new GUIContent("Order in Layer"));
            EditorGUILayout.EndHorizontal();
    
            serializedObject.ApplyModifiedProperties();
        }
        public string[] GetSortingLayerNames()
        {
            Type internalEditorUtilityType = typeof(InternalEditorUtility);
            PropertyInfo sortingLayersProperty = internalEditorUtilityType.GetProperty("sortingLayerNames", BindingFlags.Static | BindingFlags.NonPublic);
            return (string[])sortingLayersProperty.GetValue(null, new object[0]);
        }
        public int[] GetSortingLayerUniqueIDs()
        {
            Type internalEditorUtilityType = typeof(InternalEditorUtility);
            PropertyInfo sortingLayerUniqueIDsProperty = internalEditorUtilityType.GetProperty("sortingLayerUniqueIDs", BindingFlags.Static | BindingFlags.NonPublic);
            return (int[])sortingLayerUniqueIDsProperty.GetValue(null, new object[0]);
        }
    }
    

    注意:

    参考:

    Drawing-Order-Of-meshes-and-sprites

  • 相关阅读:
    [svc]frp内网穿透
    [svc]caffe安装笔记
    [na]icmp重定向
    [tools]python的mkdocs模块分分钟将md搞成一个网站
    [svc]samba服务搭建
    [ci] jenkins的Timestamper插件-让日志显示时间
    [k8s]subpath解决cm覆盖目录问题
    struts2+jquery+ajax实现上传&&校验实例
    java String.split方法是用注意点(转)
    loadrunner java协议脚本要点
  • 原文地址:https://www.cnblogs.com/chongxin/p/4547064.html
Copyright © 2011-2022 走看看