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

【Lua框架】XluaManager管理器修改

上级 a984b077
...@@ -11,8 +11,12 @@ namespace ZFramework.XLua ...@@ -11,8 +11,12 @@ namespace ZFramework.XLua
{ {
private LuaEnv _luaEnv = null; private LuaEnv _luaEnv = null;
private LuaFunction _luatick = null; private LuaFunction _luatick = null;
private LuaFunction _luaDispatchClientEvent = null;
private LuaTable _luaEventDispatcher = null;
private const string ServiceMgrScriptName = "ServiceModuleManager"; private const string ServiceMgrScriptName = "ServiceModuleManager";
private const string MainScriptName = "Main";
private const string EventDispatcherScriptName = "EventDispatcher";
private void Start() private void Start()
{ {
...@@ -53,8 +57,13 @@ namespace ZFramework.XLua ...@@ -53,8 +57,13 @@ namespace ZFramework.XLua
private void GameStartup() private void GameStartup()
{ {
LoadScript(ServiceMgrScriptName);
_luatick = _luaEnv.Global.GetInPath<LuaFunction>($"package.loaded.{ServiceMgrScriptName}.Tick"); _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> /// <summary>
...@@ -62,10 +71,18 @@ namespace ZFramework.XLua ...@@ -62,10 +71,18 @@ namespace ZFramework.XLua
/// </summary> /// </summary>
public void LoadScript(string scriptName) public void LoadScript(string scriptName)
{ {
SaveDoString($"require('{scriptName}')"); SafeDoString($"require('{scriptName}')");
} }
private void SaveDoString(string scriptContent) /// <summary>
/// 清楚require的缓存
/// </summary>
public void CleanRequiredCache(string scriptName)
{
SafeDoString($"package.loaded['{scriptName}'] = nil");
}
private void SafeDoString(string scriptContent)
{ {
if (_luaEnv!= null) if (_luaEnv!= null)
{ {
...@@ -84,11 +101,50 @@ namespace ZFramework.XLua ...@@ -84,11 +101,50 @@ namespace ZFramework.XLua
private void Update() private void Update()
{ {
if (_luaEnv != null) if (_luatick != null)
{ {
_luatick.Action(Time.deltaTime,Time.unscaledTime); _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.
先完成此消息的编辑!
想要评论请 注册