using UnityEngine; using System.Collections; using System.Collections.Generic; using XLua; using System; using System.IO; using Snxxz.UI; [LuaCallCSharp] public class LuaWindow : Window { public string fileName; Action luaOnDestroy; Action onBindController; Action onAddListeners; Action onPreOpen; Action onAfterOpen; Action onPreClose; Action onAfterClose; Action onActived; Action onLateUpdate; private LuaTable scriptEnv; private void Init() { scriptEnv = LuaUtility.env.NewTable(); LuaTable meta = LuaUtility.env.NewTable(); meta.Set("__index", LuaUtility.env.Global); scriptEnv.SetMetaTable(meta); meta.Dispose(); LuaUtility.Do(fileName, "LuaWindow", scriptEnv); scriptEnv.Get("BindController", out onBindController); scriptEnv.Get("AddListeners", out onAddListeners); scriptEnv.Get("OnPreOpen", out onPreOpen); scriptEnv.Get("OnAfterOpen", out onAfterOpen); scriptEnv.Get("OnPreClose", out onPreClose); scriptEnv.Get("OnAfterClose", out onAfterClose); scriptEnv.Get("OnActived", out onActived); scriptEnv.Get("LateUpdate", out onLateUpdate); scriptEnv.Get("OnDestroy", out luaOnDestroy); } void OnDestroy() { if (luaOnDestroy != null) { luaOnDestroy(); } luaOnDestroy = null; onBindController = null; ; onAddListeners = null; ; onPreOpen = null; ; onAfterOpen = null; ; onPreClose = null; onAfterClose = null; ; onActived = null; onLateUpdate = null; scriptEnv.Dispose(); } protected override void BindController() { Init(); if (onBindController != null) { onBindController(); } } protected override void AddListeners() { if (onAddListeners != null) { onAddListeners(); } } protected override void OnPreOpen() { if (onPreOpen != null) { onPreOpen(); } } protected override void OnAfterOpen() { scriptEnv.Set("root",this.gameObject); if (onAfterOpen != null) { onAfterOpen(); } } protected override void OnPreClose() { if (onPreClose != null) { onPreClose(); } } protected override void OnAfterClose() { if (onAfterClose != null) { onAfterClose(); } } protected override void OnActived() { base.OnActived(); if (onActived != null) { onActived(); } } protected override void LateUpdate() { base.LateUpdate(); if (onLateUpdate != null) { onLateUpdate(); } } }