我正在为我的项目使用Unity。我想要做的是当按下按钮时它将游戏对象移动到新位置。然后,再次按下相同的按钮时,对象将返回其原始位置。
我的问题在于我正在使用的while循环;当我按下这个按钮时,它只会崩溃Unity。我使用while循环错误还是有更好的方法来解决这个问题?
这是我到目前为止所做的:
public Gameobject TroubleMove;
public Gameobject TroubleAnchor;
public Gameobject TroubleMain;
public Gameobject CauseMain;
public Gameobject Cause;
public int OnOff = 1;
public void Change ()
{
switch (OnOff)
{
Case 1:
CauseMain.setActive (true);
Cause.setActive (true);
While (CauseMain == true)
{
CauseMove.transform.position = CauseAnchor.tranform.position;
}
OnOff += 1;
break;
Case 2:
CauseMain.setActive (false);
Cause.setActive (false);
OnOff _=1;
break;
}
}
答案 0 :(得分:0)
我假设CauseMain永远不会被设置为false而你的while循环永远不会退出。
为什么需要while循环?你不想一次改变光标吗?我会改变if()
答案 1 :(得分:0)
我将假设在OnClick()方法中调用了Change()。
首先,在等待用户输入或响应时,不应使用while(true)循环。 while(true)循环将成为一个永无止境的循环并崩溃Unity / Device。
我对GameObjects的真实含义感到困惑,但不是while(true)循环,而应该使用Update()或FixedUpdate()方法来转换位置(可以与Time.DeltaTime相关)。如果我没有弄错的话,这将是可以做的事情的骨架:
void Update () {
if(CauseMain) {
//TODO: Apply Transformation Changes
CauseMove.transform.position = CauseAnchor.tranform.position;
CauseMain = false;
}
}
此代码段仅在玩家按下按钮时应用转换更改,并且一旦位置设置为" CauseMove",检查将被禁用,防止无限循环将导致Unity崩溃。