最简单的基于tolua的Unity热更新方案(适用于所有脚本)

前言

为什么会有这个热更新方案?主要是现在网上的Unity热更新方案太复杂麻烦了,如果是C#开发者转tolua开发学习难度较大,基本上原来的开发流程都改变了。但是考虑了一下感觉完全没必要,Unity主要就是C#脚本无法热更吧,那就直接使用Lua脚本一对一替换C#脚本不就好了,只是语言上的改变,游戏开发逻辑流程完全不用更改。所以就出现了这个框架,优点就是简单,Lua脚本一对一替换C#脚本。

组件检查器替换

例如,原来的C#组件脚本GameManager检查器:
Alt
替换为的LuaMonoBehaviour组件,并添加对应配置属性:
Alt

组件实现替换

实现上就是把C#组件脚本的代码使用Lua重新写一遍
例如,C#组件脚本的代码:

public class GameManager : MonoBehaviour
{
    private void Start()
    {
        // Lua有更方便的协程处理方式,这里在Lua中不需要
        m_StartWait = new WaitForSeconds(m_StartDelay);
        m_EndWait = new WaitForSeconds(m_EndDelay);

        SpawnAllTanks();
        SetCameraTargets();

        StartCoroutine(GameLoop());
    }
    ...
}

那么翻译为 Lua组件脚本代码:

    local GameManager = class("GameManager", require("unity.LuaMonoBehaviour"))

    function GameManager:Start()
        self:SpawnAllTanks()
        self:SetCameraTargets()
        coroutine.start(function()
            self:GameLoop()
        end)
    end

    ...

    return GameManager

Demo和例子工程

Unity官方Tanks项目热更新重写
lun-framework框架功能示例

lun-framework框架

lun-framework是基于tolua的Unity热更新框架,通过使用Lua脚本组件替代C#脚本组件的方式实现热更新。因此使用此框架在开发流程上不会有改变,非常适合于习惯C#脚本组件开发流程的开发者使用此框架实现游戏的热更新功能。同样也可以把完成后的游戏通过替换脚本的方式渐进实现热更新,如此不用把所有C#脚本替换为Lua脚本就可以一步一步调试运行,避免代码修改过多调试困难。

lun-framework框架开源仓库

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值