Unity3D如何正确调用与修改另一个脚本中的全局变量(在碰撞检测中)?

比方说我写了某一个脚本:publicclassbringkey:MonoBehaviour{publicintyellowkey;.....}现在在另一个脚本中通过碰断检... 比方说我写了某一个脚本:
public class bringkey : MonoBehaviour {
public int yellowkey;
.....
}
现在在另一个脚本中通过碰断检测要判断yellowkey的值,然后改变yellowkey的值。
public class openydoor : MonoBehaviour {
void OnCollisionEnter2D(Collision2D col)
{
bringkey yk = new bringkey ();
if (yk.yellowkey > 0) {
Destroy (gameObject);
yk.yellowkey--;}
}
}
我这样写编译器就报错,(You are trying to create a MonoBehaviour using the 'new' keyword. ......)
请问正确的写法是什么?到底如何正确的调用另一个类中的参数?(还是说因为碰撞检测的关系,不能用new这种写法?)
展开
 我来答
百度网友f4f146dc17
2017-06-24 · TA获得超过112个赞
知道答主
回答量:82
采纳率:0%
帮助的人:50.9万
展开全部

    void OnCollisionEnter2D(Collision2D col) ///Collision2D co1 碰撞的那个碰撞物体信息
    {
        var yk = col.transform.GetComponent<bringkey>(); //获取那个碰撞物体上的类BringKey
        if (yk.yellowkey > 0)
        {
            Destroy(gameObject);
            yk.yellowkey--;
        }
    }

要获取的是已经存在于场景中的对象,继承MonoBehaviour的类相当于你贴到对象上的一个脚本控件。你要获取的是一个已经存在与场景内的对象,不能使用New,OnCollisionEnter2D函数中发生碰撞的那一刻会把与当前物体接触的那个物体碰撞信息通过参数Collision2D col传递进来。可以通过这个传递过来的值,修改传递过来物体上脚本的参数。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式