版权声明:转载 请说明 出处 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 里写 入数据。