编辑器扩展EditorUtilitySaveFilePanel

版权声明:转载 请说明 出处 https://blog.csdn.net/qq2512667/article/details/87632654
public class EditorUtilitySaveFilePanel : MonoBehaviour {
    [MenuItem("Examples/Save Texture to file")]
    static void Apply()
    {
        Texture2D texture = Selection.activeObject as Texture2D;
        
        if (texture == null)
        {
            EditorUtility.DisplayDialog(
                "Select Texture",
                "You Must Select a Texture first!",
                "Ok");
            return;
        }
        Debug.Log(AssetDatabase.GetAssetPath( Selection.activeObject.GetInstanceID()));

        var path = EditorUtility.SaveFilePanel(
            "Save texture as PNG",
            "D:",
            texture.name + ".png ",
            "png");

        if (path.Length != 0)
        {
            var pngData = texture.EncodeToPNG();
            if (pngData != null)
                File.WriteAllBytes(path, pngData);
        }
    }
}

https://docs.unity3d.com/ScriptReference/EditorUtility.SaveFilePanel.html

显示提示框 里面填的是存储文字;

EditorUtility.DisplayDialog()

可以获取 某个的asset 资源 它的存放位置。里面 填的 是 InstanceID 或者是 Object,我填的是选中的物体

AssetDatabase.GetAssetPath(  ) 

 EditorUtility.SaveFilePanel( "Save texture as PNG", "D:", texture.name + ".png ","png");

这个SaveFilePanel()

 有 4个参数 依次 相对应的是:

标题

默认存放的路径  (我写的D盘)

要存放的asset的名字

扩展名称。

EditorUtility.SaveFilePanel() 选取存放资源的路径 (带你自己的命名)

SaveFolderPanel("选择AB包存放的地址", "D:", ""); 选取存放资源的目录 (不带你自己的命名)

var pngData = texture.EncodeToPNG();     

 EncodeToPNG()  (带a,透明背景)

EncodeToJPG()   ( 不带)    两个方法都表示把texture 转换成byte数据

 File.WriteAllBytes(path, pngData);   

IO流     从path 里写 入数据。

猜你喜欢

转载自blog.csdn.net/qq2512667/article/details/87632654