提交 f8d4540c 编写于 作者: Emo_Tiny's avatar Emo_Tiny

【Lua框架】XluaManager管理器修改

上级 a984b077
......@@ -11,8 +11,12 @@ namespace ZFramework.XLua
{
private LuaEnv _luaEnv = null;
private LuaFunction _luatick = null;
private LuaFunction _luaDispatchClientEvent = null;
private LuaTable _luaEventDispatcher = null;
private const string ServiceMgrScriptName = "ServiceModuleManager";
private const string MainScriptName = "Main";
private const string EventDispatcherScriptName = "EventDispatcher";
private void Start()
{
......@@ -53,8 +57,13 @@ namespace ZFramework.XLua
private void GameStartup()
{
LoadScript(ServiceMgrScriptName);
_luatick = _luaEnv.Global.GetInPath<LuaFunction>($"package.loaded.{ServiceMgrScriptName}.Tick");
LoadScript(MainScriptName);
_luaEventDispatcher = _luaEnv.Global.GetInPath<LuaTable>($"package.loader.{EventDispatcherScriptName}");
_luaDispatchClientEvent =
_luaEnv.Global.GetInPath<LuaFunction>(
$"package.loaded.{EventDispatcherScriptName}.DispatchClientEvent");
}
/// <summary>
......@@ -62,10 +71,18 @@ namespace ZFramework.XLua
/// </summary>
public void LoadScript(string scriptName)
{
SaveDoString($"require('{scriptName}')");
SafeDoString($"require('{scriptName}')");
}
/// <summary>
/// 清楚require的缓存
/// </summary>
public void CleanRequiredCache(string scriptName)
{
SafeDoString($"package.loaded['{scriptName}'] = nil");
}
private void SaveDoString(string scriptContent)
private void SafeDoString(string scriptContent)
{
if (_luaEnv!= null)
{
......@@ -84,11 +101,50 @@ namespace ZFramework.XLua
private void Update()
{
if (_luaEnv != null)
if (_luatick != null)
{
_luatick.Action(Time.deltaTime,Time.unscaledTime);
}
}
protected override void OnDestroy()
{
CleanUp();
base.OnDestroy();
}
//清理虚拟机
private void CleanUp()
{
if (_luaEnv!= null)
{
CleanRequiredCache(AssetManager.LuaPackageName);
if (_luatick != null)
{
_luatick.Dispose();
_luatick = null;
}
if (_luaEventDispatcher!=null)
{
_luaEventDispatcher.Dispose();
_luaEventDispatcher = null;
}
if (_luaDispatchClientEvent!= null)
{
_luaDispatchClientEvent.Dispose();
_luaDispatchClientEvent = null;
}
if (_luaEnv != null)
{
_luaEnv.Dispose();
_luaEnv = null;
}
}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册