GetAssetPreview始终返回null

时间:2017-02-10 06:26:37

标签: c# unity3d thumbnails

我有一个小的统一编辑器脚本,可以从统一获取资产预览并将它们保存到文件夹中。它适用于我的机器,但它不适用于具有相同项目的另一台机器。 这是我使用的代码:

GameObject[] objs = Resources.LoadAll<GameObject>("");
foreach (GameObject obj in objs)
{
    Texture2D previewImage = null;
    while (previewImage == null)
    {
        previewImage = AssetPreview.GetAssetPreview(obj);
        Thread.Sleep(100);
    }
    System.IO.File.WriteAllBytes(previewImage.name + ".png", previewImage.EncodeToPNG());
}

代码保持在无限循环中,表示previewImage == null。有任何想法吗 ?

1 个答案:

答案 0 :(得分:0)

我知道这是一篇很老的帖子,但我一直在努力解决同样的问题,对我来说似乎工作得很好的是以下代码:

AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(prefab), ImportAssetOptions.ForceUpdate);

这会对大型资产数据库造成一点滞后,但不会太多。

解决此问题的另一种方法是使用:

EditorUtility.SetDirty(prefab);

但这太快了......

检查两者并查看哪一个符合您的需求,但我会选择第一个。