Переключение активного состояния GameObject / компонента при нажатии клавиши - PullRequest
0 голосов
/ 24 мая 2018
void Update () 
{
    if(Input.GetKeyDown(KeyCode.Tab))
    {
        ObjectOne.SetActive(true)
        Debug.Log("set");
    } 

    Debug.Log ("Update is called");
}

Я хочу переключать SetActive при повторном нажатии Tab и true при повторном нажатии.

1 Ответ

0 голосов
/ 24 мая 2018

Если вы просто хотите переключать активацию и деактивацию GameObject при каждом нажатии клавиши табуляции, получите текущее состояние с помощью ObjectOne.activeSelf, когда клавиша табуляции нажата.Отразите это с помощью !, затем передайте это перевернутое значение в функцию SetActive.

public GameObject ObjectOne;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Tab))
    {
        //Get current State
        bool currentState = ObjectOne.activeSelf;

        //Flip it
        currentState = !currentState;

        //Set the current State to the flipped value
        ObjectOne.SetActive(currentState);
    }
}

Это также можно сделать в одной строке кода:

void Update()
{
    if (Input.GetKeyDown(KeyCode.Tab))
        ObjectOne.SetActive(!ObjectOne.activeSelf);
}

Если это компонент, используйте взамен Behaviour.enabled.Вся эта штуковина все та же.Лучше кэшировать компонент, чем получать его в функции Update, но я не буду в приведенном ниже примере для простоты.

public GameObject ObjectOne;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Tab))
    {
        Renderer rdr = ObjectOne.GetComponent<Renderer>();

        //Get current State
        bool currentState = rdr.enabled;

        //Flip it
        currentState = !currentState;

        //Set the current State to the flipped value
        rdr.enabled = currentState;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...