在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
全栈游戏开发地址:GameAIs.Com 在使用Unity开发游戏以支持热更新的方案中,使用ULua是比较成熟的一种方案。那么,在使用ULua之前,我们必须先搞清楚,C#与Lua是怎样交互的了? 一.基本原理 简单地说,c#调用lua, 是c# 通过Pinvoke方式调用了lua的dll(一个C库),然后这个dll执行了lua脚本。 ULua = Lua + LuaJit(解析器、解释器) +LuaInterface。 其中,LuaInterface中的核心就是C#通过Pinvoke对Lua C库调用的封装,所以,在Unity中,LuaInterface就是C#与Lua进行交互的接口。 下面我们以一个简单的例子来演示C#与Lua的相互调用。 二.入门例子 如下是构建这个例子的步骤。 (1)下载ULua源码。 (2)在Unity中新建一个项目,并将ULua源码拷贝到Assets目录下。
(3)将ulua.dll(就是上面提到的C库)放到Assets下的Plugins文件夹中。(没有Plugins文件夹就新建一个) (4)在Assets下的Script文件夹中新建一个脚本CSharpLuaTest.cs,并将该脚本绑定到Main Camera上。 (5)在 CSharpLuaTest.cs中编辑以下内容:
(6)在Assets下的StreamingAssets文件夹中新建一个Lua脚本文件Test.lua,打开 Test.lua文件,并编辑如下内容:
7)运行Unity项目,则可以看到输出:999 - Hello World 1000 ! 三.要点说明 最后简单说一下上面代码的要点: 1.如果一个C#方法要被Lua调用,则首先要将其注册到Lua虚拟机中(LuaState.RegisterFunction)。之后,在Lua中就可以通过注册的名称来调用这个C#方法。 2.如果C#要调用Lua中的函数,则 (1)首先要在Lua虚拟机中加载该函数(LuaState.DoFile)。 (2)拿到目标函数(LuaState.GetFunction)。 (3)执行目标函数(LuaFunction.Call)。 版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。 Golang语言社区 ID:Golangweb www.GameAIs.Com www.ByteEdu.Com www.ByteEdu.Org 游戏服务器架构丨分布式技术丨大数据丨游戏算法学习 |
请发表评论