#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. Итак, для этой одной функции решите, должна ли она выполнять это или нет рядом с началом, и если да, сделайте, иначе остановитесь