16.08.2010, 16:59
|
#215
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Фак по Юнити.
вот код меню:
using UnityEngine; using System.Collections; public class mainMenu : MonoBehaviour { public Rect windowRect1= new Rect (20, 20, 120, 50); public Rect windowRect2= new Rect (20, 20, 120, 50); private string b1; private string b2; private bool a=false; private bool menu=false; public float g=5.0f; void OnGUI() { if((menu && (Application.loadedLevel==1))||(Application.loadedLevel==0)){windowRect1 = GUI.Window (0, windowRect1, MyWindow1, "Main Menu"); if(a) windowRect2 = GUI.Window (0, windowRect2, MyWindow2, "Setting");} if(Application.loadedLevel==0) { b1="Play"; b2="Exit"; } if(Application.loadedLevel==1) { b1="Continue"; b2="Main Menu"; if(Input.GetAxis("Esc")!=0) { menu=true; Screen.lockCursor = false; } if(menu) Time.timeScale=0.1f; // СТРОЧКА!!!! else Time.timeScale=1.0f; } } void MyWindow1 (int windowID) { GUILayout.BeginHorizontal(); if(GUILayout.Button(b1)) { if(Application.loadedLevel==0) Application.LoadLevel(1); if(Application.loadedLevel==1) { Screen.lockCursor = true; menu=false; } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if(GUILayout.Button("Setting")) a=!a; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if(GUILayout.Button(b2)) // СТРОЧКА!!! { if(Application.loadedLevel==1) Application.LoadLevel(0); if(Application.loadedLevel==0) Application.Quit(); } GUILayout.EndHorizontal(); //GUI.DragWindow(); } void MyWindow2 (int windowID) { GUILayout.BeginHorizontal(); GUILayout.Label("Graphics"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); g=GUILayout.HorizontalSlider(g,0,6); if(g>=0 && g<1) QualitySettings.currentLevel = QualityLevel.Fastest; if(g>=1 && g<2) QualitySettings.currentLevel = QualityLevel.Fast; if(g>=2 && g<3) QualitySettings.currentLevel = QualityLevel.Simple; if(g>=3 && g<4) QualitySettings.currentLevel = QualityLevel.Good; if(g>=4 && g<5) QualitySettings.currentLevel = QualityLevel.Beautiful; if(g>=5 && g<6) QualitySettings.currentLevel = QualityLevel.Fantastic; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if(GUILayout.Button("Ok")) a=!a; GUILayout.EndHorizontal(); //GUI.DragWindow(); } }
Почему если вместь if(menu) Time.timeScale=0.1f; поставить if(menu) Time.timeScale=0.0f;
то компилятор ругается
ArgumentException: Getting control 0's position in a group with only 0 controls when doing repaint
Aborting
UnityEngine.GUILayoutGroup.GetNext ()
UnityEngine.GUILayoutUtility.DoGetRect (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00000]
UnityEngine.GUILayoutUtility.GetRect (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00000]
UnityEngine.GUILayout.DoButton (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) [0x00000]
UnityEngine.GUILayout.Button (System.String text, UnityEngine.GUILayoutOption[] options) [0x00000]
mainMenu.MyWindow1 (Int32 windowID) (at Assets\mainMenu.cs:52)
UnityEngine.GUI+_Window.Do ()
UnityEngine.GUI.EndWindows (UnityEngine.IDList idlist)
UnityEngine.GUIUtility.EndGUI (Int32 doLayout, Int32 doWindows, UnityEngine.IDList idlist)
UnityEditor.EditorGUIUtility:RenderGameViewCameras (Rect, Rect, Boolean, Boolean)
UnityEditor.EditorGUIUtility:RenderGameViewCameras (Rect, Rect, Boolean, Boolean)
UnityEditor.GameView:OnGUI()
System.Reflection.MonoMethod:InternalInvoke(Object , Object[])
System.Reflection.MonoMethod:InternalInvoke(Object , Object[])
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
UnityEditor.HostView:Invoke(String)
UnityEditor.MaximizedHostView:OnGUI()
|
но не сразу а после нажатия кнопки "Continue" ??
Тыкает меня на if(GUILayout.Button(b2))
Почему?
|
(Offline)
|
|