private void OnDestroy() { mLuaLooper.Destroy(); mLuaState.Dispose(); mLuaLooper = null; mLuaState = null; mInstance = null; }
public static void CallFunction(string funcName) { LuaFunction func = LuaGame.GetSingleton().luaState.GetFunction(funcName); if (func != null) { func.Call(); } }
public static LuaGame GetSingleton() { if (mInstance == null) { GameObject go = new GameObject(typeof(LuaGame).ToString()); DontDestroyOnLoad(go); mInstance = go.AddComponent <LuaGame>(); mInstance.mLuaLooper = go.AddComponent <LuaLooper>(); } return(mInstance); }
private void Awake() { mInstance = this; mLuaLooper = gameObject.AddComponent <LuaLooper>(); DontDestroyOnLoad(gameObject); mLuaState = new LuaState(); mLuaLooper.luaState = mLuaState; OpenLibs(); mLuaState.LuaSetTop(0); LuaBinder.Bind(mLuaState); //测试自定义Wrap mLuaState.BeginModule(null); TestLuaWrap.Register(mLuaState); mLuaState.EndModule(); DelegateFactory.Init(); LuaCoroutine.Register(mLuaState, this); }
public LuaSetup() { PrintMessage("Lua!"); LuaScriptLoader luaScriptLoader = new LuaScriptLoader(this); LuaCustomConverters.RegisterAll(); UserData.RegisterType <TraitorMessageType>(); UserData.RegisterType <JobPrefab>(); UserData.RegisterType <CharacterInfo>(); UserData.RegisterType <Rectangle>(); UserData.RegisterType <Point>(); UserData.RegisterType <Level.InterestingPosition>(); UserData.RegisterType <Level.PositionType>(); UserData.RegisterType <Level>(); UserData.RegisterType <Items.Components.Steering>(); UserData.RegisterType <ServerLog.MessageType>(); UserData.RegisterType <SpawnType>(); UserData.RegisterType <ChatMessageType>(); UserData.RegisterType <WayPoint>(); UserData.RegisterType <Character>(); UserData.RegisterType <Item>(); UserData.RegisterType <Submarine>(); UserData.RegisterType <Client>(); UserData.RegisterType <LuaPlayer>(); UserData.RegisterType <LuaHook>(); UserData.RegisterType <LuaGame>(); UserData.RegisterType <LuaRandom>(); UserData.RegisterType <LuaTimer>(); UserData.RegisterType <Vector2>(); UserData.RegisterType <Vector3>(); UserData.RegisterType <Vector4>(); lua = new Script(CoreModules.Preset_SoftSandbox | CoreModules.LoadMethods); lua.Options.DebugPrint = PrintMessage; lua.Options.ScriptLoader = luaScriptLoader; hook = new LuaHook(this); game = new LuaGame(this); lua.Globals["Player"] = new LuaPlayer(); lua.Globals["Game"] = game; lua.Globals["Hook"] = hook; lua.Globals["Random"] = new LuaRandom(); lua.Globals["Timer"] = new LuaTimer(this); lua.Globals["WayPoint"] = UserData.CreateStatic <WayPoint>(); lua.Globals["SpawnType"] = UserData.CreateStatic <SpawnType>(); lua.Globals["ChatMessageType"] = UserData.CreateStatic <ChatMessageType>(); lua.Globals["ServerLog_MessageType"] = UserData.CreateStatic <ServerLog.MessageType>(); lua.Globals["Submarine"] = UserData.CreateStatic <Submarine>(); lua.Globals["Client"] = UserData.CreateStatic <Client>(); lua.Globals["Character"] = UserData.CreateStatic <Character>(); lua.Globals["Item"] = UserData.CreateStatic <Item>(); lua.Globals["Level"] = UserData.CreateStatic <Level>(); lua.Globals["Vector2"] = UserData.CreateStatic <Vector2>(); lua.Globals["Vector3"] = UserData.CreateStatic <Vector3>(); lua.Globals["PositionType"] = UserData.CreateStatic <Level.PositionType>(); lua.Globals["JobPrefab"] = UserData.CreateStatic <JobPrefab>(); lua.Globals["TraitorMessageType"] = UserData.CreateStatic <TraitorMessageType>(); foreach (string d in Directory.GetDirectories("Lua")) { if (Directory.Exists(d + "/autorun")) { luaScriptLoader.RunFolder(d + "/autorun"); } } }
internal Graphics(SpriteBatch spriteBatch, LuaGame lg) { Batch = spriteBatch; game = lg; }
public static LuaFunction GetFunction(string module, string funcName) { string func = string.Format("{0}.{1}", module, funcName); return(LuaGame.GetSingleton().luaState.GetFunction(func)); }