Anonymous
Текстуры загружаются в редакторе, но не в автономном режиме (отображаются розовым цветом)
Сообщение
Anonymous » 16 ноя 2024, 01:12
Я использую ресурс под названием
Простой объект , который позволяет мне
импортировать объект, его материалы и связанные текстуры . Это отлично работает в моем редакторе, но не в моем автономном.
Моего
OBJ нет в моем файле ресурсов , я беру его из другого файла с помощью WWW-метода.
Вот как я это делаю:он загружает мой OBJ, создает игровой объект и помещает его в мою сцену:
Код: Выделить всё
private IEnumerator DownloadAndImportAllInBackground(string url, Plane newPlane)
{
string objString = null;
string mtlString = null;
Hashtable textures = null;
GameObject planeObject = null;
bool gameObjectPerGroup = false;
bool subMeshPerGroup = false;
bool usesRightHanded = true;
yield return StartCoroutine(DownloadFile(url, retval => objString = retval));
yield return StartCoroutine(DownloadFile(url.Substring(0, url.Length - 4) + ".mtl", retval => mtlString = retval));
if (mtlString != null && mtlString.Length > 0)
{
string path = url;
int lastSlash = path.LastIndexOf('/', path.Length - 1);
if (lastSlash >= 0) path = path.Substring(0, lastSlash + 1);
Hashtable[] mtls = ObjImporter.ImportMaterialSpecs(mtlString);
for (int i = 0; i < mtls.Length; i++)
{
if (mtls[i].ContainsKey("mainTexName"))
{
Texture2D texture = null;
string texUrl = path + mtls[i]["mainTexName"];
yield return StartCoroutine(DownloadTexture(texUrl, retval => texture = retval));
if (texture != null)
{
if (textures == null) textures = new Hashtable();
textures[mtls[i]["mainTexName"]] = texture;
}
}
}
}
yield return StartCoroutine(DownloadFile(url, retval => objString = retval));
if (objString != null && objString.Length > 0)
{
yield return StartCoroutine(ObjImporter.ImportInBackground(objString, mtlString, textures, retval => planeObject = retval, gameObjectPerGroup, subMeshPerGroup, usesRightHanded));
planeObject.transform.localScale = new Vector3(0.0005f, 0.0005f, 0.0005f);
if (planeObject == null)
{
Debug.Log("Null gameobject");
}
planeObject.name = newPlane.Callsign;
planeObject.transform.position = new Vector3((float)newPlane.X, (float)newPlane.Afl / (3.2808f * 1852f), (float)newPlane.Y);
planeObject.transform.eulerAngles = new Vector3(0, -180 + newPlane.Heading, 0);
planeId_Object_Dictionnary.Add(newPlane.Flight, planeObject);
}
}
А вот что происходит в моем
редакторе/автономном :
Подробнее здесь:
https://stackoverflow.com/questions/369 ... pears-pink
1731708769
Anonymous
Я использую ресурс под названием [b]Простой объект[/b], который позволяет мне [b]импортировать объект, его материалы и связанные текстуры[/b]. Это отлично работает в моем редакторе, но не в моем автономном. Моего [b]OBJ нет в моем файле ресурсов[/b], я беру его из другого файла с помощью WWW-метода. Вот как я это делаю:он загружает мой OBJ, создает игровой объект и помещает его в мою сцену: [code]private IEnumerator DownloadAndImportAllInBackground(string url, Plane newPlane) { string objString = null; string mtlString = null; Hashtable textures = null; GameObject planeObject = null; bool gameObjectPerGroup = false; bool subMeshPerGroup = false; bool usesRightHanded = true; yield return StartCoroutine(DownloadFile(url, retval => objString = retval)); yield return StartCoroutine(DownloadFile(url.Substring(0, url.Length - 4) + ".mtl", retval => mtlString = retval)); if (mtlString != null && mtlString.Length > 0) { string path = url; int lastSlash = path.LastIndexOf('/', path.Length - 1); if (lastSlash >= 0) path = path.Substring(0, lastSlash + 1); Hashtable[] mtls = ObjImporter.ImportMaterialSpecs(mtlString); for (int i = 0; i < mtls.Length; i++) { if (mtls[i].ContainsKey("mainTexName")) { Texture2D texture = null; string texUrl = path + mtls[i]["mainTexName"]; yield return StartCoroutine(DownloadTexture(texUrl, retval => texture = retval)); if (texture != null) { if (textures == null) textures = new Hashtable(); textures[mtls[i]["mainTexName"]] = texture; } } } } yield return StartCoroutine(DownloadFile(url, retval => objString = retval)); if (objString != null && objString.Length > 0) { yield return StartCoroutine(ObjImporter.ImportInBackground(objString, mtlString, textures, retval => planeObject = retval, gameObjectPerGroup, subMeshPerGroup, usesRightHanded)); planeObject.transform.localScale = new Vector3(0.0005f, 0.0005f, 0.0005f); if (planeObject == null) { Debug.Log("Null gameobject"); } planeObject.name = newPlane.Callsign; planeObject.transform.position = new Vector3((float)newPlane.X, (float)newPlane.Afl / (3.2808f * 1852f), (float)newPlane.Y); planeObject.transform.eulerAngles = new Vector3(0, -180 + newPlane.Heading, 0); planeId_Object_Dictionnary.Add(newPlane.Flight, planeObject); } } [/code] А вот что происходит в моем [b]редакторе/автономном[/b]: [img]https ://i.sstatic.net/yNvET.jpg[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/36909567/textures-loads-in-editor-but-not-in-standalone-appears-pink[/url]