2017-02-10 10 views
1

У меня есть сценарий редактора небольшого единства, который получает превью активов из единицы и сохраняет их в папку. Он отлично работает для моей машины, но не работает на другой машине, которая имеет тот же проект. Вот код, я использую: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. Есть идеи ?

ответ

0

Я знаю, что это старый пост, но я боролся с той же проблемой и то, что, кажется, работает очень хорошо для меня следующий код:

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

Это приведет к немного лага для больших баз данных активов, но не слишком много.

Другой способ решения этой проблемы заключается в использовании:

EditorUtility.SetDirty(prefab); 

Однако это ооочень гораздо медленнее ...

Проверьте как и какой из них соответствует вашим потребностям, но я бы с первый.