GUI.Label不适用于for循环

时间:2015-02-02 20:24:34

标签: unity3d label 2d unity3d-gui

我在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] 之外没有任何事情发生。我究竟做错了什么?有没有人熟悉这个问题?

1 个答案:

答案 0 :(得分:0)

ifelse语句中,您都有 break 关键字,因此for循环只会运行一次然后退出循环,无论是否i < messages.Count()。只需从您希望循环继续的ifelse或两个代码块中取出break关键字,然后就应该为该部分设置全部。