Unity3D 获取Unity生成的预览图
2019-07-09 本文已影响0人
UnityAsk
当我们把模型或者图片导入Unity里面后,Unity会自动生成对应文件的预览图。在Project窗口中可以查看,包括Prefab、Material 也会自动生成预览图。 类似下图。
做编辑器扩展的时候,我们可以直接利用Unity生成的这些图,去做一些自定义的预览工具,而不用再去自己实现生成文件预览图这一步。
那么这些图存放在哪里呢?是否可以被加载呢?答案肯定是可以的。
打开Library 目录,它们就静静的待在metadata目录里面,看下图:
.info结尾的文件正是我们在Project窗口中看到的预览图文件,在mac上是可以直接预览图片内容的。
而目录的名字是取的文件名的前两个字符。
接下来我们需要搞清楚Unity中资源文件和这些文件的对应关系。
var fileName = AssetDatabase.AssetPathToGUID(assetPath);
传入assetpath,获得的fileName正是对应的metadata目录里面预览图文件名。
到这一步我们就可以直接使用这些图片了。
代码如下:
private Texture2D GetPreviewTex(string astPath)
{
var guid = AssetDatabase.AssetPathToGUID(astPath);
var texPath = "Library/metadata/"+guid.Substring(0, 2) + "/" + guid + ".info";
var texN = LoadTexture(texPath);
return texN;
}
//加载贴图
public static Texture2D LoadTexture(string filePath) {
Texture2D tex = null;
byte[] fileData;
if (File.Exists(filePath)) {
fileData = File.ReadAllBytes(filePath);
tex = new Texture2D(2, 2);
tex.anisoLevel = 8;
tex.LoadImage(fileData);
}
return tex;
}
先获得文件的路径
texPath = "Library/metadata/"+guid.Substring(0, 2) + "/" + guid + ".info";
然后加载图片。