2014-11-06 57 views
-1

我试图通过从OnTriggerEnter功能的一类到另一个class.I值已经设置,我想传递给价值的全球variable.This是我该怎么办:从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; 
    } 
} 

的问题是在另一个类,我称之为从AClassisSomething,我跑了统一,这给我NullExceptionReference,当我经过一个游戏object.This是另一个类代码:

private AClass aclass; 
public void Start() 
{ 
    aclass=AClass.instance; 
} 

public void Update() 
{ 
    Debug.Log(aclass.isSomething); //<-----------------This give Null Exception Reference 
} 

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

+0

是ACLASS静态类 – 2014-11-06 11:16:44

+0

没有。只是公共类AClass,但为了获得该类内的组件,我在该类中编写了公共静态AClass实例。 – 2014-11-06 11:35:21

+0

为什么不只是让你的类静态或其方法,你想使用静态 – 2014-11-06 11:37:10

回答

2

尝试在清醒功能分配实例:

public void Awake() 
{ 
    instance = this; 
} 

有没有保证,一个对象的start()函数之前或之后,除非你明确地设置执行次序另一个对象的情况。

+0

是的,我也尝试过这一个。我忘了提及这一点。 – 2014-11-06 11:04:39

+0

@edwardau LearnCocos2D是对的,你应该在'唤醒'而不是'开始'中做这样的分配。请记住,在“开始”之前发生“唤醒”。 – FunctionR 2014-11-06 22:10:04

0

此代码是错误的。

public void OnTriggerEnter(Collision other) 
{ 
    if(go.tag=="Something") 
    { 
    isSomething=true; 
    } 
} 

解决方案

public void OnTriggerEnter(Collision other) 
{ 
    if(other.tag == "Something") 
    isSomething=true; 
}