Exemple #1
0
        public override void OnInspectorGUI()
        {
#if UNITY_5_5_OR_NEWER
#else
            EditorUtility.SetSelectedWireframeHidden(m_SpriteMeshInstance.cachedRenderer, !m_SpriteMeshInstance.cachedSkinnedRenderer);
#endif

            EditorGUI.BeginChangeCheck();

            serializedObject.Update();

            EditorGUILayout.PropertyField(m_SpriteMeshProperty);

            serializedObject.ApplyModifiedProperties();

            if (EditorGUI.EndChangeCheck())
            {
                UpdateSpriteMeshData();
                UpdateRenderers();
                SetupBoneList();
            }

            serializedObject.Update();

            EditorGUILayout.PropertyField(m_ColorProperty);

            if (m_MaterialsProperty.arraySize == 0)
            {
                m_MaterialsProperty.InsertArrayElementAtIndex(0);
            }
            EditorGUILayout.PropertyField(m_MaterialsProperty.GetArrayElementAtIndex(0), new GUIContent("Material"), true, new GUILayoutOption[0]);

            EditorGUILayout.Space();

            EditorGUIExtra.SortingLayerField(new GUIContent("Sorting Layer"), m_SortingLayerID, EditorStyles.popup, EditorStyles.label);
            EditorGUILayout.PropertyField(m_SortingOrder, new GUIContent("Order in Layer"));

            EditorGUILayout.Space();

            if (!HasBindPoses())
            {
                List <Bone2D> bones = new List <Bone2D>();

                EditorGUI.BeginChangeCheck();

                Transform root = EditorGUILayout.ObjectField("Set bones", null, typeof(Transform), true) as Transform;

                if (EditorGUI.EndChangeCheck())
                {
                    if (root)
                    {
                        root.GetComponentsInChildren <Bone2D>(bones);
                    }

                    Undo.RegisterCompleteObjectUndo(m_SpriteMeshInstance, "set bones");

                    m_BoneTransformsProperty.arraySize = bones.Count;

                    for (int i = 0; i < bones.Count; ++i)
                    {
                        m_BoneTransformsProperty.GetArrayElementAtIndex(i).objectReferenceValue = bones[i].transform;
                    }

                    UpdateRenderers();
                }
            }

            EditorGUI.BeginChangeCheck();

            if (mBoneList != null)
            {
                mBoneList.DoLayoutList();
            }

            serializedObject.ApplyModifiedProperties();

            if (EditorGUI.EndChangeCheck())
            {
                UpdateRenderers();
            }

            if (m_SpriteMeshInstance.spriteMesh)
            {
                if (SpriteMeshUtils.HasNullBones(m_SpriteMeshInstance))
                {
                    EditorGUILayout.HelpBox("Warning:\nBone list contains null references.", MessageType.Warning);
                }

                if (m_SpriteMeshInstance.spriteMesh.sharedMesh.bindposes.Length != m_SpriteMeshInstance.bones.Count)
                {
                    EditorGUILayout.HelpBox("Warning:\nNumber of SpriteMesh Bind Poses and number of Bones does not match.", MessageType.Warning);
                }
            }
        }