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";

然后加载图片。

上一篇下一篇

猜你喜欢

热点阅读