| New file |
| | |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using XLua; |
| | | using System.IO; |
| | | |
| | | public class LuaUtility : SingletonMonobehaviour<LuaUtility> |
| | | { |
| | | public readonly static LuaEnv env = new LuaEnv(); |
| | | static float lastGCTime = 0; |
| | | const float GCInterval = 1;//1 second |
| | | |
| | | static LuaUtility() |
| | | { |
| | | env.AddLoader(new LuaEnv.CustomLoader(LoadAssetBytes)); |
| | | |
| | | env.AddBuildin("rapidjson", XLua.LuaDLL.Lua.LoadRapidJson); |
| | | env.AddBuildin("lpeg", XLua.LuaDLL.Lua.LoadLpeg); |
| | | env.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf); |
| | | env.AddBuildin("ffi", XLua.LuaDLL.Lua.LoadFFI); |
| | | } |
| | | |
| | | public static LuaTable GetNewTable() |
| | | { |
| | | return env.NewTable(); |
| | | } |
| | | |
| | | public static LuaTable Global |
| | | { |
| | | get { return env.Global; } |
| | | } |
| | | |
| | | public static void Init() |
| | | { |
| | | <<<<<<< HEAD |
| | | ======= |
| | | Do("global.table"); |
| | | Do("global.util"); |
| | | Do("global.logex"); |
| | | Do("global.functions"); |
| | | Do("global.object"); |
| | | Do("global.define"); |
| | | Do("global.stringutil"); |
| | | Do("fight/utils/FightRequire"); |
| | | Do("protocol.manager.LuaProtocalRegister"); |
| | | >>>>>>> e34df6d061d07db2993621a37e8d00bb4b4dc759 |
| | | |
| | | } |
| | | |
| | | void Update() |
| | | { |
| | | if (Time.time - lastGCTime > GCInterval) |
| | | { |
| | | env.Tick(); |
| | | lastGCTime = Time.time; |
| | | } |
| | | } |
| | | |
| | | public static void Do(string _file, string chunkName = "chunk", LuaTable _table = null) |
| | | { |
| | | var command = string.Format("require '{0}'", _file); |
| | | env.DoString(command, chunkName, _table); |
| | | } |
| | | |
| | | public static void DoString(string _file, string chunkName = "chunk", LuaTable _table = null) |
| | | { |
| | | var content = LoadAsset(ref _file); |
| | | env.DoString(content, chunkName, _table); |
| | | } |
| | | |
| | | private static string LoadAsset(ref string file) |
| | | { |
| | | file = file.Replace('.', '/'); |
| | | |
| | | var path = string.Empty; |
| | | if (AssetSource.luaFromEditor) |
| | | { |
| | | path = ResourcesPath.LUA_FODLER + "/" + file + ".lua"; |
| | | return File.ReadAllText(path); |
| | | } |
| | | else |
| | | { |
| | | var index = file.LastIndexOf("/"); |
| | | var assetBundle = StringUtility.Contact("lua/", file.Substring(0, index)).ToLower(); |
| | | var assetName = file.Substring(index + 1, file.Length - (index + 1)); |
| | | var asset = AssetBundleUtility.Instance.Sync_LoadAsset(assetBundle, assetName) as TextAsset; |
| | | return asset.text; |
| | | } |
| | | } |
| | | |
| | | private static byte[] LoadAssetBytes(ref string _fileName) |
| | | { |
| | | return System.Text.Encoding.UTF8.GetBytes(LoadAsset(ref _fileName)); |
| | | } |
| | | } |