False boolean останавливает использование скрипта более одного раза

#c# #unity3d #boolean

#c# #unity3d #логическое

Вопрос:

Я собираю систему проверки для игры, над которой я работаю, и она работает так, как задумано, хотя часть скрипта будет работать только для одного GameObject. Когда удерживаемое логическое значение равно true, я хочу, чтобы управление плеером было отключено и снова включалось, когда оно равно false. Проблема в том, что это всегда false, поэтому, когда я пытаюсь получить другой объект, это не останавливает управление проигрывателя.

Я предполагаю, что это потому, что он запущен в функции обновления. Я пытался поместить их в их собственные функции и вызывать функции, когда значение bool равно true / false, но я получаю тот же результат.

Я также написал другой скрипт до этого, который включал / выключал управление плеером, но это было сделано с помощью двух одиночных входов мыши, и это сработало, как ожидалось.

У меня есть скрипт, который обрабатывает взаимодействия с raycast и включает / выключает удерживаемое логическое значение. Во время касания raycast скрипт объекта активируется и становится нулевым, если он не касается. Скрипт объекта выглядит следующим образом..

 void Update()
{
    if (held == true)
    {
        thisObject.transform.position = holdPos.position;
        //transform.rotation = holdPos.rotation;
        lockLook.Control.Toggle = false;
        movelock.Control.Toggle = false;
    }
    else
    {
        thisObject.transform.position = startPos;
        thisObject.transform.rotation = startRot;
        lockLook.Control.Toggle = true;
        movelock.Control.Toggle = true;
    }
}
  

Я предполагаю, что мне нужно найти способ вызывать логическое значение false только один раз.

Комментарии:

1. Установите любую из подпрограмм, которые вы хотите «отключить» if (!held) return; во всех из них

2. Не могли бы вы уточнить? Я пытался поместить это в нескольких местах. Спасибо.

3. я не уверен, как вы могли бы улучшить больше, все функции, которые вы не хотите использовать, помещают это в первую строку

4. Да, помещение его в качестве первой строки функции останавливает его работу… но это не то, что мне нужно. Мне нужно переключить элемент управления обратно, а затем остановить его.

5. Итак, для этой одной функции решите, должна ли она выполнять это или нет рядом с началом, и если да, сделайте, иначе остановитесь