Ejemplo n.º 1
0
    static int LoadSceneAsync(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 3 && TypeChecker.CheckTypes <string, OnSceneNameChanged>(L, 2))
            {
                SceneMgr           obj  = (SceneMgr)ToLua.CheckObject <SceneMgr>(L, 1);
                string             arg0 = ToLua.ToString(L, 2);
                OnSceneNameChanged arg1 = (OnSceneNameChanged)ToLua.ToObject(L, 3);
                obj.LoadSceneAsync(arg0, arg1);
                return(0);
            }
            else if (count == 3 && TypeChecker.CheckTypes <int, OnSceneIndexChanged>(L, 2))
            {
                SceneMgr            obj  = (SceneMgr)ToLua.CheckObject <SceneMgr>(L, 1);
                int                 arg0 = (int)LuaDLL.lua_tonumber(L, 2);
                OnSceneIndexChanged arg1 = (OnSceneIndexChanged)ToLua.ToObject(L, 3);
                obj.LoadSceneAsync(arg0, arg1);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: SceneMgr.LoadSceneAsync"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Ejemplo n.º 2
0
 static int UnloadSceneAsync(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 3);
         SceneMgr           obj  = (SceneMgr)ToLua.CheckObject <SceneMgr>(L, 1);
         string             arg0 = ToLua.CheckString(L, 2);
         OnSceneNameChanged arg1 = (OnSceneNameChanged)ToLua.CheckDelegate <OnSceneNameChanged>(L, 3);
         obj.UnloadSceneAsync(arg0, arg1);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Ejemplo n.º 3
0
    /// <summary>
    /// 以异步方式卸载场景(携程调用)
    /// </summary>
    /// <param name="sceneName"></param>
    /// <param name="onSceneChanged"></param>
    /// <returns></returns>
    private IEnumerator UnloadTargeSceneAsync(string sceneName, OnSceneNameChanged onSceneChanged)
    {
        AsyncOperation asyncOperation = SceneManager.UnloadSceneAsync(sceneName);

        while (!asyncOperation.isDone)
        {
            yield return(asyncOperation);
        }
        currentScene = SceneManager.GetActiveScene();
        yield return(null);

        if (null != onSceneChanged)
        {
            onSceneChanged(sceneName);
        }
    }
Ejemplo n.º 4
0
    /// <summary>
    /// 以异步-叠加方式加载场景(携程调用)
    /// </summary>
    /// <param name="sceneName"></param>
    /// <param name="onsceneChanged"></param>
    /// <returns></returns>
    private IEnumerator LoadTargetSceneAdditiveAsync(string sceneName, OnSceneNameChanged onsceneChanged)
    {
        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);

        while (!asyncOperation.isDone)
        {
            yield return(asyncOperation);
        }
        Scene scene = SceneManager.GetSceneByName(sceneName);

        SceneManager.SetActiveScene(scene);
        yield return(null);

        currentScene = SceneManager.GetActiveScene();
        if (null != onsceneChanged)
        {
            onsceneChanged(sceneName);
        }
    }
Ejemplo n.º 5
0
    /// <summary>
    /// 以异步-单独的方式加载场景(携程调用)
    /// </summary>
    /// <param name="sceneName"></param>
    /// <param name="onSceneChanged"></param>
    /// <returns></returns>
    private IEnumerator LoadTargetSceneAsync(string sceneName, OnSceneNameChanged onSceneChanged)
    {
        if (SceneManager.GetActiveScene().name == sceneName)
        {
            Debug.LogWarning(string.Format("名为{0}的场景已经加载过了!", sceneName));
        }
        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);

        while (!asyncOperation.isDone)
        {
            yield return(asyncOperation);
        }
        Scene scene = SceneManager.GetSceneByName(sceneName);

        SceneManager.SetActiveScene(scene);
        yield return(null);

        currentScene = SceneManager.GetActiveScene();
        if (null != onSceneChanged)
        {
            onSceneChanged(sceneName);
        }
    }
Ejemplo n.º 6
0
 /// <summary>
 /// 以异步-叠加方式加载场景
 /// </summary>
 /// <param name="sceneName"></param>
 /// <param name="onsceneChanged"></param>
 public void LoadSceneAdditiveAsync(string sceneName, OnSceneNameChanged onsceneChanged)
 {
     StartCoroutine(LoadTargetSceneAdditiveAsync(sceneName, onsceneChanged));
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 以异步方式卸载场景
 /// </summary>
 /// <param name="sceneName"></param>
 /// <param name="onSceneChanged"></param>
 public void UnloadSceneAsync(string sceneName, OnSceneNameChanged onSceneChanged)
 {
     StartCoroutine(UnloadTargeSceneAsync(sceneName, onSceneChanged));
 }