Unity3d 我是否可以查找未附加到脚本的两个对象之间的碰撞检测?

Unity3d 我是否可以查找未附加到脚本的两个对象之间的碰撞检测?,unity3d,unity3d-2dtools,Unity3d,Unity3d 2dtools,我目前在游戏中遇到一些碰撞检测问题。我有一个使用instantiate()生成的预置,这个对象 void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.tag == "present") { gameScore++; Destroy(col.gameObject); } } 因此,当碰撞发生时,它会破坏对象并将分数加1 我用这个来设置分数: public void se

我目前在游戏中遇到一些碰撞检测问题。我有一个使用instantiate()生成的预置,这个对象

void OnCollisionEnter2D(Collision2D col)
{
    if (col.gameObject.tag == "present")
    {
        gameScore++;
        Destroy(col.gameObject);

    }
}
因此,当碰撞发生时,它会破坏对象并将分数加1

我用这个来设置分数:

public void setScore()
{
    scoreText.text = "Score: " + gameScore.ToString();
}
我已经在另一个场景中测试过了,效果很好

当游戏进行时,当发生碰撞时,它会删除对象,但不会改变游戏中可见的分数

我相信这是因为我不能分配公共文本变量

 public Text scoreText;
预制

因此,我尝试将其附加到场景中的一个空对象上,希望它能正常工作。没有

我现在已经花了几个小时试图解决这个问题,它慢慢地让我发疯:) 如果您有任何意见,我将不胜感激。 谢谢大家!

我在想,如果我可以在脚本中查找冲突,但不需要将其附加到对象上,这可能会奏效吗但是我不知道怎么做


再次感谢您的时间。

因此,首先,发布此问题的位置不对!这是StackOverflow.com,但你的问题应该在上面。 既然我不能提出你的问题,我宁愿试着回答。或者至少猜猜看。您是否再次调用setScore函数?你不认为应该是:

无效OnCollisionInter2D(Collision2D列){
如果(col.gameObject.tag==“存在”)
{
gameScore++;
setScore()//更改如下
销毁(游戏对象列);
}
}


我知道这是一个基本的答案,但有时你看不见树木,所以……

谢谢你的回答!抱歉,我只是假设由于这里有大量与unity相关的内容,所以这里就是放置unity的地方!我也在那里试过。出于某种原因,该对象正在被销毁,但没有添加分数?好吧,玩弄Unity已经有一段时间了,但我只想回顾一下,看看我们是否在同一页上:您有一个包含3个对象的场景。2个游戏对象(你的碰撞器和你的“礼物”)和一个叫做分数的标签。GameObeJCT之间的交互似乎很好。问题一定是您更新标签的方式。为了更新你的标签,你需要在你的“现在”中有一个标签类型的变量——去,然后在编辑器中将你的gameScore标签分配给这个变量,这样你就可以更新显示的文本。有吗?如果没有,请尝试并发布所有错误。