【问题标题】:Why doesn't this UnityScript code change scenes in Unity?为什么这段 UnityScript 代码不改变 Unity 中的场景?
【发布时间】:2015-11-06 00:28:39
【问题描述】:

在 Unity 中,我想在玩家进入某个区域时更改场景。该区域有盒子碰撞器,它被设置为触发器,脚本附加到该区域,但是当玩家进入该区域并按下键盘时,什么也没有发生。我没有语法错误,它说一切都很好。可能是什么问题?

代码如下:

var Level = "";
var Player = "";
function OnTriggerStay(other : Collider) {
    if(other.tag == Player){
        if(Input.GetKeyUp("up")){
            Application.LoadLevel(Level);
        }
    }
}

修改后的代码:

var Level = "";
var Player = "";
function OnTriggerStay (consolelog("Hello"))l;
{
if(other.tag == Player){
if(Input.GetKeyDown("up")){
 Application.LoadLevel(Level);
}
}
}

【问题讨论】:

  • 好了,一步一步调试吧。按下一个键时你的函数会被触发吗?
  • @Brad 我已经通过在按下键时输出到控制台进行检查,但它什么也没做
  • 您是否打算检查标签是否为空?
  • @CrudeLogic 然后您将问题缩小到关键处理程序。您的问题与Application.LoadLevel(Level) 无关。我对Unity一无所知,但更进一步。 OnTriggerStay 曾经运行过吗?如果有,other.tag 中有什么内容? Player 中有什么内容? Player 真的是空字符串吗?
  • @CrudeLogic 我指的是您的OnTriggerStay,它似乎在按下某个键时被调用。测试每个条件以进一步缩小问题范围。

标签: unity3d unityscript


【解决方案1】:

所以你的代码没问题。我设置了新项目。您的代码运行良好。
可能的陷阱:
1. 你拼错了玩家标签或关卡名称
2.您没有在构建设置中添加级别
3. 一个对撞机必须有刚体 - docs

附:问题在于设置:混合 2d 和 3d 对撞机。

【讨论】:

  • 只是为了清楚。您是否设置了新项目,使用您的代码,一切正常?然后在您的设置中出错。因此,如果您对我如何检查您的设置有任何建议,我随时准备提供帮助
  • 代码运行良好。如果您愿意,我可以将项目发送给您,以便您查看。
  • 好的,我已经在谷歌驱动器上发给你了。它被称为“Stackoverflow thingy.zip”
猜你喜欢
  • 2016-07-16
  • 1970-01-01
  • 2022-01-22
  • 2023-03-05
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多