示例#1
0
        public void ApplyChanges()
        {
            if (spriteMeshData)
            {
                spriteMeshData.vertices    = m_TexVertices.ToArray();
                spriteMeshData.boneWeights = boneWeights.ToArray();
                spriteMeshData.edges       = indexedEdges.ToArray();
                spriteMeshData.holes       = holes.ConvertAll(h => h.vertex).ToArray();
                spriteMeshData.indices     = indices.ToArray();
                spriteMeshData.bindPoses   = bindPoses.ToArray();
                spriteMeshData.pivotPoint  = pivotPoint;

                SpriteMeshUtils.DestroyBlendShapes(spriteMeshData, false, "");

                SetBlendShapesFromCache();

                EditorUtility.SetDirty(spriteMeshData);

                string spriteAssetPath = AssetDatabase.GetAssetPath(spriteMesh.sprite);
                SpriteMeshUtils.UpdateAssets(spriteMesh, spriteMeshData);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                TextureImporter textureImporter = AssetImporter.GetAtPath(spriteAssetPath) as TextureImporter;
                textureImporter.userData = textureImporter.assetTimeStamp.ToString();
                AssetDatabase.StartAssetEditing();
                AssetDatabase.ImportAsset(spriteAssetPath);
                AssetDatabase.StopAssetEditing();
                isDirty = false;
            }

            if (spriteMeshInstance)
            {
                SpriteMeshUtils.UpdateRenderer(spriteMeshInstance, false);
            }
        }
        override public void OnInspectorGUI()
        {
            Sprite oldSprite = m_SpriteProperty.objectReferenceValue as Sprite;

            EditorGUI.BeginChangeCheck();

            serializedObject.Update();

            EditorGUILayout.PropertyField(m_SpriteProperty);

            serializedObject.ApplyModifiedProperties();

            if (EditorGUI.EndChangeCheck())
            {
                Sprite sprite = m_SpriteProperty.objectReferenceValue as Sprite;

                SpriteMeshUtils.UpdateAssets(target as SpriteMesh);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                AssetDatabase.StartAssetEditing();

                if (oldSprite)
                {
                    AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(oldSprite));
                }

                AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(sprite));
                AssetDatabase.StopAssetEditing();
            }

            serializedObject.Update();

            EditorGUI.BeginDisabledGroup(true);

            EditorGUILayout.PropertyField(m_SharedMeshProperty);
            EditorGUILayout.PropertyField(m_SharedMaterialsProperty, true);

            EditorGUI.EndDisabledGroup();

            EditorGUILayout.BeginHorizontal();

            GUILayout.FlexibleSpace();

            if (GUILayout.Button("Edit Sprite Mesh", GUILayout.Width(150f)))
            {
                SpriteMeshEditorWindow window = SpriteMeshEditorWindow.GetWindow();
                window.UpdateFromSelection();
            }

            GUILayout.FlexibleSpace();

            EditorGUILayout.EndHorizontal();

            serializedObject.ApplyModifiedProperties();
        }