【问题标题】:Program : Mono Develop Unity - If Statment Issue程序:Monodevelop Unity - If 语句问题
【发布时间】:2014-04-05 10:16:45
【问题描述】:

由于某种原因,我的第二个 if 语句之后的所有内容都不起作用。当我删除该 if 语句 ie.( if Texture == blue ) 时,下面的 if 语句运行,这就是我需要它做的。但我需要它,因为当纹理为蓝色时。有谁知道这个问题的解决方案?它让我发疯。顺便说一句,没有编译错误或任何东西。我认为这是一个直接的逻辑问题。

var blue : Texture;
function OnCollisionEnter(col : Collision){


if(col.collider.name == "Brick3"){
Destroy(col.gameObject);
score += 10;
guiScore.text= "Score: " + score;
renderer.material.mainTexture = blue;
}

if(Texture == blue)
{
if(col.collider.name == "Brick2")
{
Destroy(col.gameObject);
score += 10;
guiScore.text= "Score: " + score;
print("collided with brick");
}
}
}

【问题讨论】:

  • 您在Texture == blue 中究竟比较了什么?我可以看到你在哪里声明了 blue 以及你是如何使用它的,但是 Texture 看起来不像一个变量...你是要比较 if(renderer.material.mainTexture == blue) 吗?
  • 史蒂文是对的。 Protip,使用 Debug.Log 将内容打印到控制台 - 单个“Debug.Log(Texture == blue)”会告诉您该语句是错误的。这是基本的调试实践,如果您能学会理解您的程序,您将在未来更有效地学习和工作。

标签: unity3d monodevelop unityscript


【解决方案1】:

将字符串与equals() 方法而不是== 运算符进行比较

if(col.collider.name.equals("Brick3"))

【讨论】:

  • Unity 使用 .Net String 类,所以用 == 比较字符串实际上是完全有效的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 2021-05-15
  • 2012-11-19
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多