2016-02-17 2 views
1

Я создаю скрипт 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, чтобы система каталогов работает.

Выход для этого - это просто плоскость с материалом по умолчанию вместо материала на основе текстуры. Любые советы?

+0

@JoeBlow Это двигатель единства. Это неверно, в этом случае, если вы используете команду 'UnityEditor.AssetDatabase.LoadAssetAtPath()', вы должны использовать папку «Активы», которая является основной папкой файлов. –

+0

@JoeBlow Я смотрел некоторые учебные пособия в Интернете, и они используют тип TextAsset для кодирования .jpg или .png файлов в .byte, а затем Texture.Load (image.bytes) для кодирования байтов для texure. Я полагаю, что использование изображения напрямую не будет работать, но я постараюсь! –

+0

@JoeBlow вы можете найти любое решение? Я нашел это, но все еще не работает: 'Texture tex = (Texture) Resources.Load (filename);' –

ответ

0

РЕШЕНИЕ

Это был глупый плохой вопрос расширения. Это не байт ... «.bytes» является правильным. Спасибо всем, кто пытался мне помочь.

Смежные вопросы