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)
|
|