从OnTriggerEnter函数传递值

时间:2014-11-06 10:27:37

标签: c# unity3d

我试图将一个类的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
}

我希望在传递碰撞器触发器之后获得一个值,而不是在通过碰撞器触发器之前。我不知道这是一个愚蠢的问题,但我希望有人可以给我一些想法。谢谢。 :)

2 个答案:

答案 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;
}