【UGF】(五) GameFramework集成tolua热更框架

此博文基于环境:Unity 2017.4.0f1 & tolua-1.0.7.392 & UnityGameFramework 3.1.1

GitHub上有个GF集成tolua的示例,地址:GitHub - GarfieldJiang/UGFWithToLua: Simple integration of ToLua# with UnityGameFramework.

打开示例,并导入GF框架,如果不出意外的话一定会有报错。

报错如图:

480

OK, 还算给力,报错不是很多。

报错提示没有using SceneManagement的名字空间,打开报错代码:

这里定义了Unity 5.4及以上版本则执行,但是前面写的却是一脸懵逼,把UNITY_5改为UNITY_5_4_OR_NEWER

改完之后这两个报错就被消灭了,不出意外的话还会有一堆报错:

好了,以上纯属是为了浪费各位看官的时间,凭什么我踩过的坑你们就想跳过?

以下进入正题:

这个UGFWithToLua应该是很古老了,用的GF和tolua版本都很低,对Unity新版本不兼容。

坑么卑鄙勒死狗,最新tolua免费奉上拿走不谢:GitHub - topameng/tolua: The fastest unity lua binding solution

把Assets改个名然后导入到项目Assets目录下:

配置LuaConst.cs中的luaDir, toluaDir:

public static string luaDir = Application.dataPath + "/tolua_1_0_7/Lua";
public static string toluaDir = Application.dataPath + "/tolua_1_0_7/ToLua/Lua";

配置CustomSetting.cs中的saveDir,toluaBaseType

public static string saveDir = Application.dataPath + "/tolua_1_0_7/Source/Generate/";    
public static string toluaBaseType = Application.dataPath + "/tolua_1_0_7/ToLua/BaseType/"; 

然后还会有报错,这是因为LuaComponent使用了旧版本的tolua API,旧版tolua DoString()和DoFile()返回值为object[],而新版本返回void:

把LuaComponent的DoString、DoFile方法改为:

public void DoString(string chunk, string chunkName = "")
        {
            if (string.IsNullOrEmpty(chunkName))
            {
                m_LuaState.DoString(chunk);
            }

            m_LuaState.DoString(chunk, chunkName);
        }

public void DoFile(string fileName)
        {
            m_LuaState.DoFile(fileName);
        }

接着还会有报错,原因是ProcedureLunch.cs中使用了旧版GF的API,需要把EventId.ResourceInitComplete改为ResourceInitCompleteEventArgs.EventId

OK,大功告成,运行:

700

test.lua成功执行,但是gf框架报了一个错让人很不爽,这是gf 3.1.1的一个bug, 在SettingComponent完成初始化之前有地方调用了它的GetBool()函数,解决方法是把SettingComponent的Start方法改个名,放在Awake中调用。

Over!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值