GetAssetPreview总是返回null

问题描述:

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

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。有任何想法吗 ?

我知道这是旧的文章,但我一直在用同样的问题挣扎,似乎什么工作对我很好是下面的代码:

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

这将导致有点滞后了大型资产数据库,但不是太多。

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

EditorUtility.SetDirty(prefab); 

但是,这是SOOO慢得多......

同时检查,看看哪一个适合您的需求,但我会与去第一。