本文共 1296 字,大约阅读时间需要 4 分钟。
ulua下载:
ulua技术论坛:
ulua的机制是利用的反射,就是lua代码和C#代码相互映射
首先导入LuaInterface:using LuaInterface;
在C#中实例化的LuaState也可以预定义一些Lua全局变量,这都是在C#里完成的,比如:
void SetLuaData(LuaState lua){ lua["transform"] = transform; lua["gameObject"] = gameObject;}
预定义了两个变量,一个是transform,一个是gameObject。
关于Lua里的全局变量:
Lua里所有的字符串,如果不是关键字或者运算符,就都是变量;这些变量中,凡是没用local关键字修饰的,就是全局变量,反之,则是局部变量。每个LuaState对象,当它加载过Lua代码以后,它里面定义的全局变量,在这个对象生命期内是一直存在的。如果两次调用这个LuaState的某方法,第一次将某全局变量进行了修改,那么第二次,这个全局变量会在第一次修改的基础上继续修改。
首先是导入了 C#集合以及'UnityEngine'
luanet.load_assembly("Assembly-CSharp")
luanet.load_assembly('UnityEngine')
关于Lua里的预处理:
luanet.load_assembly("Assembly-CSharp")
luanet.load_assembly('UnityEngine')
Vector2 = luanet.import_type('UnityEngine.Vector2')
Vector3 = luanet.import_type('UnityEngine.Vector3')
GameObject = luanet.import_type('UnityEngine.GameObject')
luanet.import_type('System.Collections.Generic.List')
Debug = luanet.import_type('UnityEngine.Debug')
import操作是Lua调用C#的前提
下面导入了一个名字为“CSharpClass_name”的.cs格式的脚本类。
CSharpClass= luanet.import_type('CSharpClass_name')
在Lua里面使用C#的类可以通过两种方式,一种就是将C#类付给lua的一个变量;另一种方法就是通过GetComponent方法,将C#引进到Lua里面。
例:
local go=GameObject.Find(obj_name’);
local labletext = go:GetComponent('UILabel');
注意:
对象调用自己的函数用冒号
lua的后缀是不被支持打包进assertbundle的,所以我们一般把 .lua后缀 变为.lua.txt 或者 .lua.bytes 进行打包。
转载地址:https://linxinfa.blog.csdn.net/article/details/51811765 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!