Unity3D - 尝试将“.byte”文件应用为对象纹理时出现问题
Unity3D - Issue when trying to apply ".byte" file as an object texture
我正在创建一个 C# 脚本,该脚本在程序启动时将导入的纹理应用于平面(游戏对象)。为此,我将用户选择的图像复制到资产文件夹。然后我将其更改为.byte 扩展名,那是因为我正在使用TextAsset 来读取和设置对象纹理。
现在我认为失败的是纹理加载,这是完整的脚本代码:
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 文件夹,因此目录系统正在运行。
此输出只是一个带有默认 Material 的平面,而不是基于图像纹理的 material。
有什么建议吗?
解决方案
这是一个愚蠢的错误扩展问题。它不是 .byte ...“.bytes”是正确的。无论如何,谢谢那些试图帮助我的人。
我正在创建一个 C# 脚本,该脚本在程序启动时将导入的纹理应用于平面(游戏对象)。为此,我将用户选择的图像复制到资产文件夹。然后我将其更改为.byte 扩展名,那是因为我正在使用TextAsset 来读取和设置对象纹理。
现在我认为失败的是纹理加载,这是完整的脚本代码:
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 文件夹,因此目录系统正在运行。
此输出只是一个带有默认 Material 的平面,而不是基于图像纹理的 material。 有什么建议吗?
解决方案
这是一个愚蠢的错误扩展问题。它不是 .byte ...“.bytes”是正确的。无论如何,谢谢那些试图帮助我的人。