GUITexture 上的 NullReferenceException

NullReferenceException on GUITexture

我想从脚本中添加 GUITexture 但它出错了,然后我尝试插入 GUITexture(从 GameObject > 创建其他 > GUI Texture)然后 link 它到脚本 但是当我尝试使用 pixelInset 移动 guitexture 时,出现错误

NullReferenceException UnityEngine.GUITexture.get_pixelInset () (在 C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/Graphics.cs:3254)

这是脚本

public GUITexture temp;

void Start () {
    temp = new GUITexture ();
    temp.pixelInset.Set (100,100,100,100);
}

问题

当您调用 new GUITexture() 时,Unity 只会将您的 temp 对象设为 null。然后,当您尝试使用它时,您会得到一个 NullReference Exception。为什么?因为GUITexture继承自Behaviour,Unity就是这样构建的。

解决方案

您已经通过编辑器将引用拖到 GUItexture,因此您只需删除此行即可。

// Remove this line
temp = new GUITexture ();

除了 FunctionR 的回答之外,在尝试对对象执行任何操作之前检查对象是否不为 null 总是好的。

public GUITexture temp;

void Start () {
    // temp = new GUITexture (); <- Overrides the texture your assigned in the editor
    if (temp) temp.pixelInset.Set (100,100,100,100);
}