如何在Unity3D中进行切换点击?

时间:2016-07-26 00:43:23

标签: c# unity3d unityscript unity5

我想做到这一点,一旦点击一个按钮就会产生一些东西,当你再次点击它时,它会产生其他东西。

using UnityEngine;
using System.Collections;

public class Ai : MonoBehaviour {
    bool stopstate = false;
    Animator _anim;
    // Use this for initialization
    void Start () {

        _anim = GetComponent<Animator> ();
        //_animation = GetComponent<Animation> ();
    }

    // Update is called once per frame
    void Update () {

        if (Input.GetKey (KeyCode.Z)) {

            if (stopstate == false) {
                stopstate = true;
                _anim.Stop ();
            } else {

                stopstate = false;
                _anim.StartPlayback ();
            }
        }

    }
}

一旦我点击了Z Stop()但是如果我再次在Z上按下它就播放。

问题是代码在Update函数中,所以当我按下它停在_anim.StartPlayback()上的Z键后我使用断点;但它应该在第二次点击Z时到达。

第二个问题是它行_anim.StartPlayback();它并没有使角色从停止的角度继续行走。

_anim.Stop();真的阻止了它,但StartPlayback()没有让它继续。

1 个答案:

答案 0 :(得分:1)

最适合您的选项是CheckBox在前端创建一个复选框(让它为chkToggle),然后使用以下代码将其外观更改为按钮(初始化后或在页面中)负荷):

chkToggle.Appearance = System.Windows.Forms.Appearance.Button;

所以它就像前端的按钮一样。然后,如果选中它,您可以使用以下代码执行某些操作,如果未选中则执行其他操作。

private void chkToggle_CheckedChanged(object sender, EventArgs e)
{
    if((sender as CheckBox).Checked)
    {
          // Do something
    }
    else
    {
        // Do other thing
    }
}

如果它是单个方法,那么您可以使用类型为boolean的全局变量来保持状态并切换它们;然后代码将如下所示:

bool currentState; // false will be the default value
void Update () 
{
   if(currentState)
   {
     // Dosomething
   }
   else
   {
    // Do some other thing
   }
    currentState = !currentState; // toggle the state
}