Я создаю скрипт C#, который применяет импортированную текстуру к плоскости (Игровому объекту) при запуске программы. Для этого я копирую пользовательский снимок в папку с ресурсами. Затем я меняю его на расширение .byte, потому что я использую TextAsset для чтения и установки текстуры объекта.Unity3D - Проблема при попытке применить файл «.byte» как текстуру объекта
Теперь то, что я считаю, что не удается это текстура нагрузки, это полный код сценария:
using UnityEngine;
using System.Collections;
using System.IO;
public class setplant : MonoBehaviour {
GameObject plant;
void Start() {
plant = GameObject.Find("plant");
string currentdirectory = System.IO.Directory.GetCurrentDirectory();
string pathconfig = (Path.GetFullPath(Path.Combine(currentdirectory, "..\\Pick_And_Build\\Launcher\\Launcher\\bin\\Debug\\tempfiles\\"))+"instanciateprogram.dat");
StreamReader reader = File.OpenText(pathconfig);
string img = reader.ReadLine();
reader.Close();
string textureresourcepath = Directory.GetCurrentDirectory() + "\\Assets\\" + Path.GetFileNameWithoutExtension(img) + ".byte";
if(!File.Exists(textureresourcepath))
File.Copy(img, textureresourcepath);
TextAsset imageasset = UnityEditor.AssetDatabase.LoadAssetAtPath(Path.GetFileName(textureresourcepath), typeof(TextAsset)) as TextAsset;
Texture2D tex = new Texture2D(2, 2);
tex.LoadImage(imageasset.bytes);
plant.GetComponent<Renderer>().material.mainTexture = tex;
}
void Update() {
}
}
Примечание:изображение копируется в папку Assets, чтобы система каталогов работает.
Выход для этого - это просто плоскость с материалом по умолчанию вместо материала на основе текстуры. Любые советы?
@JoeBlow Это двигатель единства. Это неверно, в этом случае, если вы используете команду 'UnityEditor.AssetDatabase.LoadAssetAtPath()', вы должны использовать папку «Активы», которая является основной папкой файлов. –
@JoeBlow Я смотрел некоторые учебные пособия в Интернете, и они используют тип TextAsset для кодирования .jpg или .png файлов в .byte, а затем Texture.Load (image.bytes) для кодирования байтов для texure. Я полагаю, что использование изображения напрямую не будет работать, но я постараюсь! –
@JoeBlow вы можете найти любое решение? Я нашел это, но все еще не работает: 'Texture tex = (Texture) Resources.Load (filename);' –