/// <summary> /// 销毁控制器 /// </summary> /// <returns>是否销毁成功</returns> public bool Destory() { if (mStatus == EnumConfig.SystemControllerStatusEnum.OVER) { Debug.LogError("system controller status is overed. destory faild."); return(false); } mStatus = EnumConfig.SystemControllerStatusEnum.OVER; if (mLuaOnDestroy != null) { mLuaOnDestroy(); } if (mLuaenv != null) { mLuaenv.Dispose(); } mLuaStart = null; mLuaUpdate = null; mLuaOnDestroy = null; mLuaenv = null; mScriptEnv.Dispose(); injections = null; return(true); }
/// <summary> /// 初始化控制器 /// </summary> private void init() { mStatus = EnumConfig.SystemControllerStatusEnum.INIT; mLuaenv = new XLua.LuaEnv(); mLuaenv.DoString("CS.UnityEngine.Debug.Log('Lua Env create successful.')"); mScriptEnv = mLuaenv.NewTable(); Utils.BindMetaTable(mLuaenv, mScriptEnv); mScriptEnv.Set("self", this); foreach (var injection in injections) { mScriptEnv.Set(injection.name, injection.value); } mLuaenv.DoString(mLuaScript.text, "LuaTestScript", mScriptEnv); Action awake = mScriptEnv.Get <Action>("awake"); if (awake != null) { awake(); } mScriptEnv.Get("onStart", out mLuaStart); mScriptEnv.Get("update", out mLuaUpdate); mScriptEnv.Get("onDestroy", out mLuaOnDestroy); }
/// <summary> /// 启动控制器 /// </summary> /// <returns>是否启动成功</returns> public bool Start() { mStatus = EnumConfig.SystemControllerStatusEnum.STARTING; if (mLuaStart != null) { mLuaStart(); } return(true); }
/// <summary> /// 暂停游戏 /// </summary> /// <returns>是否暂停成功</returns> public bool Pause() { mStatus = EnumConfig.SystemControllerStatusEnum.PAUSE; return(true); }