一个简单的游戏框架:tolua相关
代码:https://github.com/HushengStudent/myGameFramework
1.tolua集成
下载tolua:https://github.com/topameng/tolua
关于tolua的集成主要参考LuaFramework_UGUI,实现自己的LuaMgr。
//参考(https://github.com/jarjin/LuaFramework_UGUI)集成tolua;
public class LuaMgr : MonoSingleton<LuaMgr>
{
private LuaState lua;
private LuaLoaderUtility loader;
private LuaLooper loop = null;
public override void Init()
{
base.Init();
//...
}
public override void AwakeEx()
{
base.AwakeEx();
//初始化LuaMgr;
loader = new LuaLoaderUtility();//TODO:Lua AssetBundle的使用;
lua = new LuaState();
this.OpenLibs();
lua.LuaSetTop(0);
LuaBinder.Bind(lua);
DelegateFactory.Init();
LuaCoroutine.Register(lua, this);
}
/// <summary>
/// 初始化加载第三方库;
/// </summary>
void OpenLibs()
{
lua.OpenLibs(LuaDLL.luaopen_pb);
//lua.OpenLibs(LuaDLL.luaopen_sproto_core);
//lua.OpenLibs(LuaDLL.luaopen_protobuf_c);
lua.OpenLibs(LuaDLL.luaopen_lpeg);
lua.OpenLibs(LuaDLL.luaopen_bit);
lua.OpenLibs(LuaDLL.luaopen_socket_core);
this.OpenCJson();
}
//cjson比较特殊,只new了一个table,没有注册库,这里注册一下;
protected void OpenCJson()
{
lua.LuaGetField(LuaIndexes.LUA_REGISTRYINDEX, "_LOADED");
lua.OpenLibs(LuaDLL.luaopen_cjson);
lua.LuaSetField(-2, "cjson");
lua.OpenLibs(LuaDLL.luaopen_cjson_safe);
lua.LuaSetField(-2, "cjson.safe");
}
public void StartLuaMgr()
{
InitLuaPath();