Показать сообщение отдельно
Старый 16.08.2010, 16:59   #215
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Фак по Юнити.

вот код меню:
using UnityEngine;
using System.Collections;

public class 
mainMenu MonoBehaviour {
public 
Rect  windowRect1= new Rect (202012050);
public 
Rect  windowRect2= new Rect (202012050);
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 (0windowRect1MyWindow1"Main Menu");
            if(
awindowRect2 GUI.Window (0windowRect2MyWindow2"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(
menuTime.timeScale=0.1f//  СТРОЧКА!!!!
            
else Time.timeScale=1.0f;
        }
    }
    
    
void MyWindow1 (int windowID
    {
        
GUILayout.BeginHorizontal();
        if(
GUILayout.Button(b1))
        {
            if(
Application.loadedLevel==0Application.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==1Application.LoadLevel(0);
            if(
Application.loadedLevel==0Application.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>=&& g<1)
            
QualitySettings.currentLevel QualityLevel.Fastest;
        if(
g>=&& g<2)
            
QualitySettings.currentLevel QualityLevel.Fast;
        if(
g>=&& g<3)
            
QualitySettings.currentLevel QualityLevel.Simple;
        if(
g>=&& g<4)
            
QualitySettings.currentLevel QualityLevel.Good;
        if(
g>=&& g<5)
            
QualitySettings.currentLevel QualityLevel.Beautiful;
        if(
g>=&& 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)
 
Ответить с цитированием