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

  • 相关阅读:
    提取数据用strpos函数比较,预期和实际不符问题解决
    thinkphp模板中foreach循环没数据的错误解决
    错误之thinkphp模型使用发生的错误
    ThinkPHP添加模板时,犯的三个错
    mysql中的comment用法
    在cmd下输入/g无效
    Windows下PHPUnit安装
    python中string.casefold和string.lower区别
    python3数据类型
    python终端颜色设置
  • 原文地址:https://www.cnblogs.com/chongxin/p/4547064.html
Copyright © 2011-2022 走看看