GUI.Label не работает для цикла
У меня проблема с печатью элементов GUI для цикла метод pF OnGUI(). В приведенном ниже коде я создаю GUI.Label пользователя нажал на GUI.Box:
public List<string> messages = new List<string>();
int dialogueMsg = 0;
void OnGUI()
{
Event currentEvent = Event.current;
if (enabled)
{
GUI.BeginGroup(new Rect(Screen.width / 8, Screen.height / 4 + Screen.height / 2, Screen.width - Screen.width / 4, Screen.height / 4));
GUI.Box(new Rect(0, 0, Screen.width - Screen.width / 4, Screen.height / 4), "");
if (currentEvent.button == 0 && currentEvent.type == EventType.mouseDown)
{
for (int i = 0; i < messages.Count; i ++)
{
if (dialogueMsg < messages.Count)
{
print(dialogueMsg);
print(messages[dialogueMsg]);
GUI.Label(new Rect(25, 25, Screen.width - Screen.width / 4, Screen.height / 4), messages[dialogueMsg]);
++dialogueMsg;
break;
}
else
{
enabled = !enabled;
break;
}
}
}
GUI.EndGroup();
}
}
А когда пользователь нажал - ничего не произошло, кроме печати правильных значений dialogMsg и сообщений [dialogMsg]. Что я делаю неправильно? Кто-нибудь знаком с этой проблемой?
1 ответ
В обоих if
а также else
заявления у вас есть ключевое слово break, таким образом, for
цикл будет запущен только один раз, затем выйдет из цикла независимо от того, i < messages.Count()
или нет. Просто выньте ключевое слово break из if
или же else
или оба кодовых блока (ов), где вы хотите, чтобы цикл продолжался, тогда вы должны быть полностью настроены для этой части.