将Gameobject返回到原始位置

时间:2015-09-17 16:58:01

标签: c# unity3d transform gameobject

我正在为我的项目使用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;

      }
}

2 个答案:

答案 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崩溃。