我试图将一个类的OnTriggerEnter函数的值传递给另一个类。我已经设置了我想要传递给全局变量的值。这就是我的方法:
public GameObject go;
public bool isSomething;
public static AClass instance;
public void Start()
{
instance=this;
}
public void OnTriggerEnter(Collision other)
{
if(go.tag=="Something")
{
isSomething=true;
}
}
问题出在另一个类,我从isSomething
调用AClass
并运行Unity,当我通过游戏对象时它给我NullExceptionReference。这是另一个类代码:
private AClass aclass;
public void Start()
{
aclass=AClass.instance;
}
public void Update()
{
Debug.Log(aclass.isSomething); //<-----------------This give Null Exception Reference
}
我希望在传递碰撞器触发器之后获得一个值,而不是在通过碰撞器触发器之前。我不知道这是一个愚蠢的问题,但我希望有人可以给我一些想法。谢谢。 :)
答案 0 :(得分:2)
尝试在唤醒功能中分配实例:
public void Awake()
{
instance = this;
}
除非您明确设置执行顺序,否则无法保证一个对象的Start()函数在另一个对象之前或之后发生。
答案 1 :(得分:0)
这段代码错了。
public void OnTriggerEnter(Collision other)
{
if(go.tag=="Something")
{
isSomething=true;
}
}
<强>解决方案强>
public void OnTriggerEnter(Collision other)
{
if(other.tag == "Something")
isSomething=true;
}