美文网首页
Unity3D 获取Unity生成的预览图

Unity3D 获取Unity生成的预览图

作者: UnityAsk | 来源:发表于2019-07-09 20:48 被阅读0次

    当我们把模型或者图片导入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";
    

    然后加载图片。

    相关文章

      网友评论

          本文标题:Unity3D 获取Unity生成的预览图

          本文链接:https://www.haomeiwen.com/subject/eagfkctx.html