Unity Xlua 简洁明了的热更教程(一)

在unity中配置xlua环境

下载xlua
之后讲该目录打开,将xLua>Assets文件夹下的PluginsXlua文件夹,移动至你的工程项目Assets文件夹中。
在这里插入图片描述
移动之后用unity打开该项目,则会在菜单栏中出现XLua这个选项。
在这里插入图片描述
打开ProjectSettings找到Scripting Define Symbols填入HOTFIX_ENABLE
在这里插入图片描述
此时XLua菜单中会多一个选项
在这里插入图片描述
还有一点忘了说,还要把下载的Xlua项目根目录中的Tools文件夹移动到你项目的根目录中。
要不在注入的时候会报please install the Tools的错误。在这里插入图片描述
然后在自己的项目中打开下图的场景。
在这里插入图片描述
然后选中XLua>Generate Code,等待控制台出现finishied!@#¥的提示
在这里插入图片描述
在这里插入图片描述
然后选中XLua>Hotfix Inject In Editor,控制台出现finish!就说明注入完成了!
在这里插入图片描述

在这里插入图片描述
这一步很重要,每次修改完代码都要执行这两步操作!

然后点击开始按钮,在控制台上会显示如下提示
在这里插入图片描述
再点击Hotfix按钮,控制台的提示变成了lua
在这里插入图片描述
在这里插入图片描述

此时官方例子就已经允许成功了,说明xlua在unity中的配置完成了。
现在我们在工程中新建一个名字为Game的场景。然后点击XLua>Clear Generated Code,先清空一下冗余代码。

搭架场景

在Game场景中新建一个Plane和Cube游戏物体,给他们位置归0。调整让Cube位置让它处于plane上,然后在Cube物体上添加Rigidbody组件,新建Cube脚本,把脚本添加在Cube上。
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Cube : MonoBehaviour
{
    private Rigidbody rigidbody;
    // Start is called before the first frame update
    void Start()
    {
        rigidbody = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W))
        {
            rigidbody.AddForce(Vector3.up*200);
        }
    }
}

然后保存。运行场景。
此时按W键,发现物体跳起来。

读取外部Lua代码并在unity中运行

我们在任意位置新建Txt文本,命名为Test.lua.txt,输入lua中的打印语句。然后编码格式另存为UTF-8重点否则编译不通过。
在这里插入图片描述
保存文件记住这个文件的路径,然后新建HotFixScript脚本,这个是xlua热更脚本。代码如下

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using XLua;
/// <summary>
/// 演示脚本
/// </summary>
public class HotFixScript : MonoBehaviour
{
    private LuaEnv luaEnv;//lua虚拟环境
    private void Awake()
    {
        luaEnv = new LuaEnv();//开启lua虚拟环境
        luaEnv.AddLoader(MyLoader);
        luaEnv.DoString("require 'Test'");//用虚拟机运行Lua代码
    }
    private byte[] MyLoader(ref string filePath)
    {
        string absPath = @"H:\xiangmu\Txt\Assets\Lua\" + filePath + ".lua.txt";//在任何地方都可以新建一个存放lua的文件夹,存放Lua代码的路径
        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
    }

    private void OnDestroy()
    {
        luaEnv.Dispose();//关闭
    }
}

因为有代码变动,所以再重复开头的两部操作:

XLua>Generate Code
XLua>Hotfix Inject In Editor

运行场景
在这里插入图片描述
lua代码运行成功并显示在控制台中!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

育婴房扛把子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值