前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XLua-热更新(HotFix)

XLua-热更新(HotFix)

作者头像
祝你万事顺利
发布2019-06-13 16:29:08
4K0
发布2019-06-13 16:29:08
举报
文章被收录于专栏:Unity游戏开发Unity游戏开发

仿照XLua的官方例子,我们做一个XLua的热更新 1.按照hotfix.md的使用说明

1、添加HOTFIX_ENABLE宏打开该特性(在Unity3D的File->Build Setting->Scripting Define Symbols下添加)。编辑器、各手机平台这个宏要分别设置!如果是自动化打包,要注意在代码里头用API设置的宏是不生效的,需要在编辑器设置。 (建议平时开发业务代码不打开HOTFIX_ENABLE,只在build手机版本或者要在编译器下开发补丁时打开HOTFIX_ENABLE) 2、执行XLua/Generate Code菜单。 3、注入,构建手机包这个步骤会在构建时自动进行,编辑器下开发补丁需要手动执行"XLua/Hotfix Inject In Editor"菜单。注入成功会打印“hotfix inject finish!”或者“had injected!”。

2.内嵌模式

默认通过小工具执行代码注入,也可以采用内嵌到编辑器的方式,定义INJECT_WITHOUT_TOOL宏即可。

3.代码实例 在C#代码中我们要将热更新的类添加特性[Hotfix] 这里我们要更改一个Update方法通过XLua的Hotfix

代码语言:javascript
复制
[Hotfix]
public class CSHotFix : MonoBehaviour {    
    void Start () {
        LuaManager.Instance.luaEnv.DoString("require 'MyHotFix'", "MyHotFix.lua.txt");
    }   
    void Update () {
        if (Input.GetMouseButtonDown(1))
        {
            print("right mouse put");
        }
    }
}

在Lua代码中,使用xlua.hotfix方法传入要修改的类,被修改的方法,新的方法。这样在程序运行的时候,就会执行Lua的代码了

代码语言:javascript
复制
xlua.hotfix(CS.CSHotFix,"Update",function ()
    if CS.UnityEngine.Input.GetMouseButtonDown(1) then
        local obj = CS.UnityEngine.GameObject.CreatePrimitive(CS.UnityEngine.PrimitiveType.Sphere)
        obj.name = "made in Lua";
    end
end)

4.一个类的私有属性可以访问要在Lua中添加

代码语言:javascript
复制
xlua.private_accessible(CS.CSHotFix);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.06.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档