【发布时间】:2014-12-30 21:54:28
【问题描述】:
嗨,我是 Unity 和 c# 的新手..
我在同一个场景中有两个脚本文件,
文件 versionchecker.cs 中的 1 个协程,用于从我的 Web 服务器获取版本号数据
public string versionURL = "http://localhost/check.php";
IEnumerator GetVersion()
{
WWW vs_get = new WWW(versionURL);
yield return vs_get;
if (vs_get.error != null)
{
connection = 1;
}
else
{
currentVersion = vs_get.text;
bundleVersion = PlayerSettings.bundleVersion;
connection = 0;
}
}
但是在 beginingscreen.cs 的另一个文件中,我有一个用于起始屏幕的协程..
void Start () {
if(!isExit)
StartCoroutine (BeginningAnimation ());
else
StartCoroutine (EndAnimation ());
}
IEnumerator BeginningAnimation()
{
fade.FadeIn (1.5f);
yield return new WaitForSeconds (2);
fade.FadeOut (1);
yield return new WaitForSeconds (0.9f);
Application.LoadLevel (LevelToLoad);
}
IEnumerator EndAnimation()
{
yield return new WaitForSeconds (0.5f);
fade.FadeOut (1);
yield return new WaitForSeconds (1);
Application.Quit ();
}
这个脚本我把它放在我游戏的同一个场景中。但有时开始屏幕的协程在获取版本的协程之前先完成,因为获取版本需要连接到网络服务器,有时网络服务器滞后。 .
那么我怎样才能让获取版本协程首先完成,然后开始屏幕才能启动..
【问题讨论】:
-
在第二个协程中使用
yield return WaitUntil(() => coroutineOver);,其中coroutineOver是一个bool,一旦第一个协程结束就设置为true。