Для этого использую несколько текстур (секвенцию) и WaitForSeconds, чтобы включалась не последняя текстура сразу, а плавно все по очереди.
Но вот беда WaitForSeconds не работает! И не только сейчас, да и в других скриптах, где требовалась плавность (там пришлось делать анимацией).
Скажите пожалуйста в чём дело?
Самые главные части скрипта это методы: VerifPosCurInTotMainMenu() и wait(). Остальные приведены для понимания скрипта.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class MainMenu : MonoBehaviour
{
public GUIStyle mmGUIStyle;
Rect butPosExit;
Texture texExit;
public bool dtmm, dswm;
public Texture[] testExitFocuse, testExit_unFocuse;
public int i;
void Start ()
{
dtmm=true;
dswm=false;
i=0;
}
void Update ()
{
//Кнопки TotalMainMenu
//Exit позиция
butPosExit = new Rect(Screen.width/1.2339F,Screen.height/1.1042F,Screen.width/9.6969F,Screen.height/10.5882F);
}
void OnGUI()
{
if (dtmm)
{
DrawTotalMainMenu();
}
if (dswm)
{
DrawSelectWorldMenu();
}
}
void VerifPosCurInTotMainMenu()
{
//проверка Exit
if (butPosExit.Contains(Event.current.mousePosition)) //если мышь попадает в область кнопки, то текстура изменяется
{
texExit=testExitFocuse[i];
if (i>=testExitFocuse.Length-1)
i=testExitFocuse.Length-2;
i=i+1;
Debug.Log(i);
wait(5);
}
else
{
texExit=testExitFocuse[i];
if (i<=0)
i=1;
i=i-1;
Debug.Log(i);
wait(12);
}
}
//Главное меню
void DrawTotalMainMenu()
{
VerifPosCurInTotMainMenu();
//Exit
if (GUI.Button(butPosExit, texExit, mmGUIStyle))
{
Application.Quit();
}
//play
if(GUI.Button(butPosPlay,texPlay,mmGUIStyle))
{
dswm=!dswm;
dtmm=!dtmm;
}
}
//Выбираем мир
void DrawSelectWorldMenu()
{
VerifPosCurInSelWorldMenu();
//Back
if(GUI.Button(butPosBack, texBack, mmGUIStyle))
{
dtmm=!dtmm;
dswm=!dswm;
}
}
IEnumerator wait(float t)
{
yield return new WaitForSeconds(t);
}
}
using System.Collections;
public class MainMenu : MonoBehaviour
{
public GUIStyle mmGUIStyle;
Rect butPosExit;
Texture texExit;
public bool dtmm, dswm;
public Texture[] testExitFocuse, testExit_unFocuse;
public int i;
void Start ()
{
dtmm=true;
dswm=false;
i=0;
}
void Update ()
{
//Кнопки TotalMainMenu
//Exit позиция
butPosExit = new Rect(Screen.width/1.2339F,Screen.height/1.1042F,Screen.width/9.6969F,Screen.height/10.5882F);
}
void OnGUI()
{
if (dtmm)
{
DrawTotalMainMenu();
}
if (dswm)
{
DrawSelectWorldMenu();
}
}
void VerifPosCurInTotMainMenu()
{
//проверка Exit
if (butPosExit.Contains(Event.current.mousePosition)) //если мышь попадает в область кнопки, то текстура изменяется
{
texExit=testExitFocuse[i];
if (i>=testExitFocuse.Length-1)
i=testExitFocuse.Length-2;
i=i+1;
Debug.Log(i);
wait(5);
}
else
{
texExit=testExitFocuse[i];
if (i<=0)
i=1;
i=i-1;
Debug.Log(i);
wait(12);
}
}
//Главное меню
void DrawTotalMainMenu()
{
VerifPosCurInTotMainMenu();
//Exit
if (GUI.Button(butPosExit, texExit, mmGUIStyle))
{
Application.Quit();
}
//play
if(GUI.Button(butPosPlay,texPlay,mmGUIStyle))
{
dswm=!dswm;
dtmm=!dtmm;
}
}
//Выбираем мир
void DrawSelectWorldMenu()
{
VerifPosCurInSelWorldMenu();
//Back
if(GUI.Button(butPosBack, texBack, mmGUIStyle))
{
dtmm=!dtmm;
dswm=!dswm;
}
}
IEnumerator wait(float t)
{
yield return new WaitForSeconds(t);
}
}