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

目录

  • 前言
    • 组件检查器替换
    • 组件实现替换
    • Demo和例子工程
  • lun-framework框架

前言

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

组件检查器替换

例如,原来的C#组件脚本GameManager检查器:
最简单的基于tolua的Unity热更新方案(适用于所有脚本)_第1张图片
替换为的LuaMonoBehaviour组件,并添加对应配置属性:
最简单的基于tolua的Unity热更新方案(适用于所有脚本)_第2张图片

组件实现替换

实现上就是把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框架开源仓库

你可能感兴趣的:(unity,lua,开发语言)