SLua 优化初始化速度
发表于2017-11-24
导出很多类到 Lua中,直接造成游戏打开的时候初始化 SLua 花费了 3-4 秒,为此,下面就给大家介绍下SLua如何优化初始化速度。
对项目中的 SLua 进行了两个优化:
1、导出的类中,没有在 Lua 中使用的 Public 函数、变量 ,全部添加 [SLua.DoNotToLua] 属性。
2、在 LuaSvr 中,有下面这样一段代码:
static void bindAll(IntPtr l)
{
// add RELEASE macro to switch on below codes
#if RELEASE && (UNITY_IOS || UNITY_ANDROID)
BindUnity.Bind(l);
BindUnityUI.Bind(l); // delete this line if not found
BindDll.Bind(l); // delete this line if not found
BindCustom.Bind(l);
#else
Assembly[] ams = AppDomain.CurrentDomain.GetAssemblies();
List<Type> bindlist = new List<Type>();
foreach(Assembly a in ams)
{
Type[] ts=a.GetExportedTypes();
foreach (Type t in ts)
{
if (t.GetCustomAttributes(typeof(LuaBinderAttribute),false).Length > 0)
{
bindlist.Add(t);
}
}
}
bindlist.Sort( new System.Comparison<Type>((Type a,Type b) =>
{
LuaBinderAttribute la = (LuaBinderAttribute)a.GetCustomAttributes(typeof(LuaBinderAttribute),false)[0];
LuaBinderAttribute lb = (LuaBinderAttribute)b.GetCustomAttributes(typeof(LuaBinderAttribute),false)[0];
return la.order.CompareTo(lb.order);
})
);
foreach (Type t in bindlist)
{
t.GetMethod("Bind").Invoke(null, new object[] { l });
}
#endif
}
所以可以 添加 RELEASE 宏定义 。
处理完以后,大家会发现初始化速度加快了。
