Mam do czynienia z problemem z zanikiem sceny. Zrobiłem animację zanikania w & out również wykonał skrypt o nazwie Fader
, który ma funkcję coroutine. Animacja działa dobrze. Istnieje również pusty obiekt gry o nazwie SceneManager
, który ma skrypt. W tym skrypcie zapisywane są funkcje przycisków, które otwierają scenę. Przycisk nie działa poprawnie w przypadku zaniku sceny
Ale problem jest po kliknięciu dowolnego przycisku, na przykład Scene2 Button
potem zanikać na początku animacji, w pewnym milliseconds
kiedy pojawiają się czarny ekran, jeśli kliknięciu na tym czarnym ekranie następnie kolejna scena jest otwarta . To nie otworzy scene2
obejrzeć ten film
https://drive.google.com/file/d/0B1H5fdK2PJAnbm5fWDhlN3dVVnc
Link pakiet skrypt Menedżer https://drive.google.com/file/d/0B1H5fdK2PJAnZ2Y1UEFRMmVFbTA
Scena:
public class Manager : MonoBehaviour
{
public void GoBackScene1()
{
Fader.instance.Perform ("Scene1");
}
public void Scene2()
{
Fader.instance.Perform ("Scene2");
}
public void Scene3()
{
Fader.instance.Perform ("Scene3");
}
public void Scene4()
{
Fader.instance.Perform ("Scene4");
}
}
Scena Fader Scenariusz:
public class Fader : MonoBehaviour {
public static Fader instance;
[SerializeField]
private GameObject canvas;
[SerializeField]
private Animator anim;
void Awake(){
makeSingleton();
}
public void Perform(string levelname)
{
StartCoroutine(FadeInAnimation(levelname));
}
void makeSingleton(){
if (instance != null) {
Destroy (gameObject);
} else {
instance = this;
DontDestroyOnLoad(gameObject);
}
}
IEnumerator FadeInAnimation(string level){
canvas.SetActive (true);
anim.Play ("FadeIn");
yield return new WaitForSeconds (1f);
Application.LoadLevel (level);
anim.Play ("FadeOut");
yield return new WaitForSeconds (2f);
canvas.SetActive (false);
}
}
może mi zasugerować co sekunda są zapisem w 'plon powrócić nowe WaitForSeconds (1f)' dla fade in i out –
Nie ma dobrych lub złych ilość sekund Ty decydujesz. Faktycznie użycie nieprawidłowo zakodowanej wartości jest złym wyborem, czas oczekiwania powinien być oparty na długości animacji. – Everts
Jak powiedział Fafase, nie ma tu dobrego ani złego, możesz zostawić go na 1 sekundę, jest OK, ale staraj się nie pomijać punktu problemu: problem nie występuje z powodu długości animacji, ponieważ nie robisz tego t wyłącz przyciski podczas animacji. –