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

  • 相关阅读:
    gitlab 国内镜像安装
    docker 安装和启动redis
    jenkins 国内镜像更新地址
    docker 安装 jenkins
    docker 使用阿里云镜像加速
    '
    windows/linux 命令可以用符号连接执行
    思科访问控制列表优先级
    交换机泛洪
    虚拟机floppy0
  • 原文地址:https://www.cnblogs.com/chongxin/p/4547064.html
Copyright © 2011-2022 走看看