lua和unity如何交互_Unity3D C#和Lua互相调用

本文介绍了Unity3D中C#与Lua交互的原理,利用P/Invoke调用Lua DLL执行脚本。C#通过注册函数到Lua虚拟机实现被调用,而Lua通过调用C#注册的方法进行交互。示例代码展示了C#如何加载和执行Lua文件,以及在Lua中调用C#方法并返回结果。
摘要由CSDN通过智能技术生成

原理:c#调用lua, 是c# 通过P/Invoke方式调用了lua的dll(一个C库),然后这个dll执行了lua脚本。

(P/Invoke的全称是Platform Invoke (平台调用) 它实际上是一种函数调用机制通 过P/Invoke我们就可以调用非托管DLL中的函数 )

Lua调用C#

将C#方法注册到Lua虚拟机中(LuaState.RegisterFunction)

在lua中就可以通过注册的方法名调用C#方法

C#调用Lua

在C#中加载lua文件(LuaState.DoFile)

拿到目标函数(LuaState.GetFunction)

调用目标函数(LuaFunction.Call)

示例代码

///CSharpLuaTest.cs

public class CSharpLuaTest : MonoBehaviour {

private LuaState luaState = new LuaState(); // 创建lua虚拟机

void Start ()

{

// 在lua虚拟机(全局)中注册自定义函数

this.luaState.RegisterFunction("CSharpMethod", this, this.GetType().GetMethod("CSharpMethod"));

// 加载lua文件(绝对路径)

this.luaState.DoFile(Application.streamingAssetsPath + "/Test.lua");

// 加载完文件后,使用GetFunction获取lua脚本中的函数,再调用Call执行。

ob

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值