Тайна переменной Unity
Я настраиваю обычную кнопку переключения, например, воспроизведение / пауза, вместо этого автоматический / ручной.Булево значение «просматривается» двумя способами.В одном методе он работает, в другом значение никогда не регистрируется как истинное.В чем может быть проблема?
ИСТОРИЯ ВОПРОСА: У меня есть код, у меня есть простая кнопка, которая должна работать с кнопкой переключения.
Когда я нажимаю кнопку, текст кнопки устанавливается на «Ручной» или «Автоматический».Это также установит логическую переменную в true или false.
Так что логика есть.Нажатие кнопки: если для логической переменной IsAuto задано значение true (имеется в виду im в автоматическом режиме), установите для кнопки текст «Автоматический» (в этот момент на кнопке должно появиться «Ручной», пользователь нажмет установленный ручной режим) и установитеIsAuto ложно.Сейчас мы находимся в ручном режиме.Кнопка говорит «Автоматически», а IsAuto ложно;Если мы нажмем еще раз, мы вернемся в автоматический режим, и кнопка должна сказать «Ручной».Так же, как кнопка воспроизведения / паузы.Эта часть работает.Он переключается назад и вперед.Следовательно, моя переменная работает здесь.
Затем активируется другая функция SetForcedLODGroup.Эта активация происходит из-за скольжения слайдера.OnSliderValueChanged я вызываю SetForcedLODGroup.Теперь я хочу проверить, находится ли я в ручном или автоматическом «режиме», поэтому я смотрю на IsAuto.Здесь возникает проблема.когда этот метод читает переменную IsAuto, он всегда будет читать false.
Может быть, ошибка Роки, но взгляните на код.Нет другого кода, касающегося этой переменной.
public void OnLODControlConfigurationClick()
{
var gobj = GameObject.Find("CSL23.STA003");
if (IsAuto)
{
Debug.Log("LOD Boolean is: " + IsAuto);
gobj.GetComponent<LODGroup>().ForceLOD((int)lodLevel);
button.GetComponentInChildren<Text>().text =
"Automatic";
obj.text = "Automatic";
OnForcedLODChangeEvent(lodLevel);
IsAuto= false;
Debug.Log("And is changed to: " + IsAuto);
slider.interactable = true;
} else {
Debug.Log("LOD Boolean is: " + booleanLod);
gobj.GetComponent<LODGroup>().ForceLOD(-1);
button.GetComponentInChildren<Text>().text = "Manual";
OnForcedLODChangeEvent(-1);
IsAuto = true;
Debug.Log("And is changed to: " + IsAuto);
slider.interactable = false;
}
}
.
public int count;
public void SetForcedLODGroup()
{
Debug.Log("SetForcedLODGroup" + " Count: " + count);
count++;
Debug.Log("Boolean Lod value: " + IsAuto);
if(booleanLod)
{
return;
} else
{
var gobj = GameObject.Find("CSL23.STA003");
gobj.GetComponent<LODGroup>().ForceLOD((int)lodLevel);
OnForcedLODChangeEvent(lodLevel);
}
}
Событие просто сообщает метке пользовательского интерфейса об изменении его текстового значения.
Я ожидаю, что это:
Debug.Log("SetForcedLODGroup" + " Count: " + count);
count++;
Debug.Log("Boolean Lod value: " + IsAuto);
также вернет, что логическое значение равно true, после того как для него установлено значение true из OnLODControlConfigurationClick ().Но это никогда не происходит.Надеюсь, кто-то может объяснить, почему это так.