ulua学习笔记1

来源:互联网 发布:阿里云产品 编辑:程序博客网 时间:2024/06/06 08:50

ulua下载:点击打开链接

ulua技术论坛:点击打开链接

ulua的机制是利用的反射,就是lua代码和C#代码相互映射


首先导入LuaInterfaceusing 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 进行打包。


0 0
原创粉丝点击