我在Unity 4.3.3f1中工作,我正在尝试在运行时加载纹理,但我不断获得NullReferenceExpection
。我的.png
位于资产/资源中,由this question指定。
我的实际代码是
Texture tex = Resources.Load("lava_pic", typeof(Texture)) as Texture;
Rect pos = new Rect(transform.position.x - 50,
transform.position.y - 50, 100, 100);
GUI.DrawTexture(pos, tex);
我也尝试使用.png
扩展程序
错误是
NullReferenceException: Object reference not set to an instance of an object
UnityEngine.GUI.DrawTexture (Rect position, UnityEngine.Texture image, ScaleMode
scaleMode, Boolean alphaBlend, Single imageAspect) (at
C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/GUI.cs:208)
UnityEngine.GUI.DrawTexture (Rect position, UnityEngine.Texture image) (at
C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/GUI.cs:204)
LavaScript.FixedUpdate () (at Assets/Scripts/LavaScript.cs:35)'
如果我输入Debug.Log(tex);
,它也会打印出null
,这就是问题所在。
我真的不知道为什么会这样。它位于that's where it needs to be以后的Resources文件夹中,我相当确定它可以是.png
文件。我做错了什么?
答案 0 :(得分:3)
尝试删除文件扩展名,使其仅为lava_pic
。
来自Resources
docs的相关信息:
...必须省略扩展名
我的机器上的工作示例。如果原始代码位于OnGUI
之外,则可能是null对象是GUI而不是纹理。
我的纹理位于Assets/Resources/galaxy_example.png
public class DrawTexture : MonoBehaviour {
Texture tex;
Rect pos;
void Start () {
tex = Resources.Load("galaxy_example", typeof(Texture)) as Texture;
pos = new Rect(transform.position.x - 50,
transform.position.y - 50, 100, 100);
}
void OnGUI(){
Debug.Log (tex);
GUI.DrawTexture(pos, tex);
}
}
答案 1 :(得分:1)
如果您尝试在Asset / Resource文件夹中加载图像,请使用:Resoure.Load("image",typeof(texture))
作为纹理。
如果要从其他文件夹加载完整路径加载图像:
Texture2D Txt= Resources.LoadAssetAtPath<Texture2D> ("Assets/Sprites/Scene1.png");