前言

上节,刚刚说到创建一个“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/),我们共同学习进步。下篇文章再见!

 

uLua学习之创建游戏对象(二)的更多相关文章

  1. Ajax 学习之创建XMLHttpRequest对象------Ajax的核心

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. java学习之创建线程方法二

    我们上一节当中讲到了创建线程的第一种方法,就是继承Thread类,覆写Thread当中的run方法,然后创建子类对象,之后调用对象的start方法启动线程.但是这种方法有一个缺陷,因为我们知道在jav ...

  3. python学习笔记——创建事件对象Event

    1 Event对象的基本概述 用 multiprocessing.Event 实现线程间通信,使用multiprocessing.Event可以使一个线程等待其他线程的通知,我们把这个Event传递到 ...

  4. Ajax学习系列——创建XMLHttpRequest对象

    Ajax - 创建XMLHttpRequest对象 首先介绍什么是XMLHttpRequest: XMLHttpRequest是Ajax的基础.中文可以解释为可扩展超文本传输请求.术语缩写为XHR. ...

  5. java web学习总结(八) -------------------HttpServletResponse对象(二)

    一.HttpServletResponse常见应用--生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,

  6. javaweb学习总结(八)——HttpServletResponse对象(二)

    一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,

  7. avaweb学习总结(八)——HttpServletResponse对象(二)

    一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,

  8. javaweb学习总结(八)——HttpServletResponse对象(二)(转)

    (每天都会更新至少一篇以上,有兴趣的可以关注)转载自孤傲苍狼 一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedI ...

  9. html5学习笔记5--API Range对象(二)

    Range对象之cloneRange和cloneContents 代码效果如下 首次点击“选择内容“按钮提示如下 接着会显示 最后显示 以下为整个代码 <!DOCTYPE html> &l ...

随机推荐

  1. CSS类名命名规则

    CSS样式命名 说明 网页公共命名 #wrapper 页面外围控制整体布局宽度 #container或#content 容器,用于最外层 #layout 布局 #head, #header 页头部分 ...

  2. DMA缓冲区乒乓操作的处理

    http://www.51hei.com/bbs/dpj-141761-1.html https://blog.csdn.net/sunnydreamrain/article/details/8288 ...

  3. 结合jenkins以及PTP平台的性能回归测试

    此文已由作者余笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1背景简介 1.1 jenkins Jenkins是一个用Java编写的开源的持续集成工具.在与Oracle ...

  4. Wannafly summer camp Day2I(思维)

    #include<bits/stdc++.h>using namespace std;int a[1000007],b[1000007],c[1000007];int find_max(i ...

  5. java排序算法(持续更新)

    package exception; import java.util.Arrays; public class Sort { public static void main(String[] arg ...

  6. 未能加载文件或程序集“Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyTok”

    1.首先看一下C:\Windows\assembly目录下是不是只有一个Oracle.DataAccess,我的版本是10,如果是只有一个,则往下看: 2.将完整的odp.net(目录下包含注册文件) ...

  7. CF987A Infinity Gauntlet 模拟

    You took a peek on Thanos wearing Infinity Gauntlet. In the Gauntlet there is a place for six Infini ...

  8. > Task :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED

    > Task :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED D8: Cannot fit requested ...

  9. Kubernetes基本概念之Name和NameSpace

    在Kubernetes中,所有对象都会被指定一个唯一的Name和UID. 用户还可以指定一些不要求唯一性的数据附加到对象上,例如Label和Annotation. 1. Name Name是创建一个K ...

  10. TOMCAT调优内容

    使用NIO EndPoint connector线程数, 最大并发数 最大请求数 阻塞队列大小 jvm Xms Xmm maxMetaspace gc收集器 应用app逻辑优化:这个才是重点