延迟c#unity 3d中的负载水平

时间:2014-03-23 21:42:39

标签: c# unity3d

我已经创建了一些代码,用于在用户完成后20秒加载我的下一个级别,但是我得到一个错误“访问静态函数需要对象引用”但是我需要该函数是静态的当我的直升机门打开并且用户可以进入直升机时能够打电话给它。有人可以帮忙吗?

    using UnityEngine;
using System.Collections;

public class GameManager : MonoBehaviour {


    static bool _hasPlayerWon = false;

    public static bool HasPlayerWon {get{return _hasPlayerWon;}}

    Health _playerHealth;




    public static void WinPlayer()
    {

        _hasPlayerWon = true;
        Invoke("loadSplash",20.0f);

    }


    void loadSplash ()
    {
        Application.LoadLevel("splash1");

    }


}

1 个答案:

答案 0 :(得分:3)

创建一个字段,其中包含对GameManager的引用,并使用触发加载的方法调用Coroutine。

这样的事情:

static private GameManager instance;

void Awake()
{
    instance = this;
}

public static void WinPlayer()
{
    _hasPlayerWon = true;
    instance.LoadLevel();
}

private void LoadLevel()
{
  StartCoroutine( LoadCo() );
}

private IEnumerator LoadCo()
{
  yield return new WaitForSeconds( 20.0 );

  Application.LoadLevel("splash1");
}