我在for循环pf OnGUI()方法中打印GUI元素时遇到问题。在下面列出的代码中,我创建了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();
}
}
当用户点击时 - 除了打印正确的值 dialogueMsg 和消息[dialogueMsg] 之外没有任何事情发生。我究竟做错了什么?有没有人熟悉这个问题?
答案 0 :(得分:0)
在if
和else
语句中,您都有 break 关键字,因此for
循环只会运行一次然后退出循环,无论是否i < messages.Count()
。只需从您希望循环继续的if
或else
或两个代码块中取出break关键字,然后就应该为该部分设置全部。