Unity热更学习toLua使用--[1]toLua的导入和默认加载执行lua脚本

unity,tolua,lua · 浏览次数 : 0

小编点评

**导入 toLua 资源包** 1. 从 GitHub 项目地址中下载 toLua 资源包。 2. 将资源包导入工程目录中。 3. 在项目配置中设置 toLua 的路径。 **C# 调用 Lua 脚本** 1. 创建一个 `LuaState` 对象。 2. 使用 `luaState.Start()` 方法开启虚拟机。 3. 使用 `luaState.DoFile()` 方法加载 lua 脚本。 4. 使用 `luaState.CheckTop()` 方法检查栈顶是否为空。 5. 使用 `luaState.Dispose()` 方法释放执行资源。 **代码示例** **Main.lua** ```lua function Main() print("logic start") end ``` **C# 调用脚本** ```csharp public class CallLuaEntrance : MonoBehaviour { private LuaState luaState; void Start() { // 创建 LuaState 对象 luaState = new LuaState(); // 启动虚拟机 luaState.Start(); // 加载 lua 脚本 luaState.DoFile("Main.lua"); // 检查栈顶是否为空 luaState.CheckTop(); // 释放执行资源 luaState.Dispose(); } } ```

正文

[0]toLua的导入

下载toLua资源包,访问GitHub项目地址,点击下载即可。

image-20240504135957215

将文件导入工程目录中:

img

导入成功之后会出现Lua菜单栏,如未成功生成文件,可以点击Generate All 重新生成(注意很可能是路径问题导致的生成失败!)

image-20240504140721395

之后就可以开始编写脚本执行第一个lua程序了!

[1]C#调用Lua脚本

编写C#脚本,使用LuaState来开启虚拟机加载lua脚本,加载lua脚本有两种方式。

直接加载Lua目录下的lua脚本

这是LuaState自动寻找的路径--即Asset/Lua 路径 ,所以只需要给lua脚本的名称即可。

 public class CallLuaEntrance:MonoBehaviour
    {
        private void Start()
        {
            LuaState luaState = new LuaState();
            luaState.Start();
            //可加可不加 lua后缀
            luaState.DoFile("Main.lua");
            //或者使用require 不可以带后缀类型
            //luaState.Require("Main");
            luaState.CheckTop();//检查栈顶是否为空
            luaState.Dispose();//释放执行
            //luaState = null;
        }
    }

Main.lua

--主入口函数。从这里开始lua逻辑
function Main()					
	print("logic start")	 		
end

Main()

即可完成第一个脚本的调用执行。

加载自定义目录下的lua脚本

image-20240504143633860

image-20240504144052664

image-20240504143954520

与Unity热更学习toLua使用--[1]toLua的导入和默认加载执行lua脚本相似的内容:

Unity热更学习toLua使用--[1]toLua的导入和默认加载执行lua脚本

[0]toLua的导入 下载toLua资源包,访问GitHub项目地址,点击下载即可。 将文件导入工程目录中: 导入成功之后会出现Lua菜单栏,如未成功生成文件,可以点击Generate All 重新生成(注意很可能是路径问题导致的生成失败!) 之后就可以开始编写脚本执行第一个lua程序了! [1]

[Unity] 实现AssetBundle资源加载管理器

实现Unity AssetBundle资源加载管理器 AssetBundle是实现资源热更新的重要功能,但Unity为其提供的API却十分基(jian)础(lou)。像是自动加载依赖包、重复加载缓存、解决同步/异步加载冲突,等基础功能都必须由使用者自行实现。 因此,本篇博客将会介绍如何实现一个Ass

Unity 编辑器中获取选中的文件夹、文件路径

编辑器中获取选中的文件夹、文件路径 using UnityEditor; using UnityEngine; using Object = UnityEngine.Object; public class MyEditorScript { [MenuItem("Assets/PrintSelect

扩展实现Unity协程的完整栈跟踪

现如今Unity中的协程(Coroutine)方案已显得老旧,Unitask等异步方案可以直接解决如异常捕获等各类问题, 并且Unity官方也在开发一套异步方案,但现阶段还是需要在协程这个方案上继续琢磨。 Unity协程中无法输出完整的栈跟踪,因为协程编译后会转换为IL编码的状态机,中间存在栈回到堆

Unity三维数学总结

三维向量和三角函数 三维向量 向量是指一个同时具有大小和方向,且满足平行四边形法则的几何对象。 向量的模 po点相对于世界坐标原点的距离: po.magnitude。 标准向量,归一向量,指的是将向量的模变成1,方向不变。改变后的向量: po.normalized。 向量的方向 求向量的方向(求向量

[Unity] Dreamteck Splines实现沿路径移动功能

Dreamteck Splines实现沿路径移动功能 最近有一个“让物体沿固定路径移动”的需求,因此接触到了Dreamteck Splines插件。 Dreamteck Splines可以很方便地绘制各种插值曲线,但在实现物体移动的时候却遇到了很多坑,因此在这里记录一下。 1. 绘制路径线 首先,让

Unity 利用Cache实现边下边玩

现在手机游戏的常规更新方案都是在启动时下载所有资源更新,游戏质量高的、用户粘性大的有底气,先安装2个G,启动再更新2个G,文件小了玩家还觉得品质不行不想玩。 最近在做微信、抖音小游戏,使用他们提供的资源缓存方案,现在要转成Android APP, 也想用这种边下边玩的机制把首包做小。 其实很简单,直

Unity开发Hololens2—环境配置

> 博客地址:https://www.cnblogs.com/zylyehuo/ * ![](https://img2023.cnblogs.com/blog/3071480/202304/3071480-20230405201857570-1161269618.png) > 配置如下: > win

Unity开发Hololens2—交互发布配置

> 博客地址:https://www.cnblogs.com/zylyehuo/ ## 环境配置 ```bash unity2021.3.15f visual studio 2019 pro MRTK 2.8.3 OpenXR 1.8.0 Hololens2 ``` > Hololens2 环境配置

Unity框架与.NET, Mono框架的关系

什么是C# C#是一种面向对象的编程语言。 什么是.NET .NET是一个开发框架,它遵循并采用CIL(Common Intermediate Language)和CLR(Common Language Runtime)两种约定, CIL标准为一种编译标准:将不同编程语言(C#, JS, VB等)使