游戏项目中,使用热更新是很常见的。主流的热更方案有xlua、tolua以及ILRuntime等。其中xlua是鹅厂开源的热更框架。笔者在公司使用的是xlua,想结合实际运用经验,分享一些关于xlua的知识。
本篇文章简单介绍lua代码的运行环境即虚拟机。熟悉java的朋友都知道java代码的运行,也是建立在java虚拟机之上的。虚拟机,顾名思义:它是特定代码能够正常执行的根本。鹅厂开放的xlua框架,实质是让我们可以在Unity项目中编写lua代码文件来实现业务逻辑功能,并且允许C#与Lua代码之间相互访问。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
/*
* xlua虚拟机
*/
public class LuaEnvTest : MonoBehaviour {
private LuaEnv luaEnv;
void Awake()
{
//创建lua虚拟机,它是lua代码运行环境,所以必须提前初始化
//【注意】整个项目中,有一个lua虚拟机即可
luaEnv = new LuaEnv();
}
void Start()
{
ExcuteLuaCode("CS.UnityEngine.Debug.LogError('Good Morning')");
}
/// <summary>
/// lua代码执行
/// </summary>
/// <param name="luaStr"></param>
private void ExcuteLuaCode(string luaStr)
{
if (luaEnv != null)
luaEnv.DoString(luaStr);
}
void OnDestroy()
{
//释放卸载
if (luaEnv != null)
luaEnv.Dispose();
}
}
上面是一个简单lua代码执行例子。主要介绍lua代码执行的lua虚拟机环境实例对象的创建。