前言
上节,刚刚说到创建一个“HelloWorld”程序,大家想必都对uLua有所了解了,现在我们一步步地深入学习。在有关uLua的介绍中(在这里),我们可以发现它使用的框架是Lua + LuaJIT + LuaInterface,其中Lua就是我们的主角,LuaJIT是采用C语言写的Lua的解释器,LuaInterface则用于实现Lua和CLR的混合编程。也就是说LuaJIT和LuaInterface提供对Lua脚本语言的支持。在今天我们要用到的功能来讲,我们先要来说说LuaInterface吧!
LuaInterface简介
LuaInterface.Lua类是CLR访问Lua解释器的主要接口,一个LuaInterface.Lua类对象就代表了一个Lua解释器(或Lua执行环境),Lua解释器可以同时存在多个,并且它们之间是完全相互独立的。我们可以利用LuaInterface的luanet在Lua中加载CLR的类型,也就是说可以使用luanet来使用unity3d中命名空间里的类了。今天用到了两个函数:load_assembly函数:加载CLR程序集;import_type函数:加载程序集中的类型。
添加粒子系统
相关代码如下:
其中,我们要用的lua脚本是以字符串形式存在的,这点要牢记。在脚本字符串前面有一个@字符,这是用于控制转义字符,一般在带有转义字符或者很长一段string值有换行时都会用到@。脚本第三行生成了一个局部变量newGameObj,然后给它赋一个新生成的游戏对象,名字是NewObj。下一行则给这个游戏对象添加了一个粒子系统。这就是一个简单的对象生成。然后在Start方法中用DoString执行这个脚本就可以看到效果了,如下所示:
有了这个思路,我们不妨试试生成其他的游戏物体。
进行面板操作
我们可以添加一个GUIText并进行属性面板赋值操作,说到这里,你应该想到了什么,没错,就是可以用这个来进行数据配置文件的动态更新,用Lua脚本的方式要比xml,ini文件更加方便,这也是lua脚本的魅力所在。相关代码如下:
运行后,我们可以看到在场景中有一个NewObj对象,并且已经添加了GUIText组件,它的属性面板截图如下,明显地应用了我们所给定的值:
结束语
今天就先到这里吧,本人也是刚接触这个,摸着石头过河,有所错误在所难免。希望诸位大神能够批评指正,我将十分感激。有什么建议,欢迎访问我的个人网站(http://chunqiuyiyu.sinaapp.com/),我们共同学习进步。下篇文章再见!