uLua学习之读取外部Lua脚本(四)
2015-01-19 15:51
369 查看
前言
上节说到了Lua脚本与unity3d中C#脚本的数据交互,但是我感觉上节中的数理方式不太好,因为我们是把Lua脚本以字符串形式粘贴到C#脚本中的,如果读取配置数据都这样做的话,那就太可怕了。想想看,一个C#脚本中有一个长长的字符串,十分不方便,也非常混乱。那么有没有更好的处理方式呢?答案是肯定的。这节我们就来看看如何读取外部的Lua脚本吧,这样的话,Lua和C#就是完全分开的,便于维护和理解。
在宿主脚本中(C#中)的处理方式是确定的,主要是如何来获取外部的Lua脚本,以下会详细说明读取外部Lua脚本的三种方式。
静态赋值方式
这是十分方便的方式,也就是符合unity3d特色的拖动赋值。将我们需要的Lua脚本后缀名改为"txt",在C#中用一个“TextAsset”类型的变量来接收它,然后直接可以在属性面板中拖动赋值。C#脚本如下所示:
![](http://images.cnitblog.com/blog/706907/201501/191426221412471.png)
Lua脚本如下所示:
![](http://images.cnitblog.com/blog/706907/201501/191428008442958.png)
面板赋值情况:
![](http://images.cnitblog.com/blog/706907/201501/191429279225195.png)
运行结果(三种方式的运行结果都是一样的):
![](http://images.cnitblog.com/blog/706907/201501/191430104063040.png)
资源加载方式
将脚本文件放入资源文件夹中,用unity3d中的API方法来调用,有以下两种类似的方法,需要注意的是书写资源路径时后缀名的保留与否。
1、将文本形式的Lua脚本放在Resources文件夹下,用Load方式来加载(不需要后缀名):
![](http://images.cnitblog.com/blog/706907/201501/191434591569254.png)
2、将脚本放入资源目录下的任一文件夹中,通过路径来访问得到(需要后缀名):
![](http://images.cnitblog.com/blog/706907/201501/191452027031487.png)
网络加载方式
以上两种方式说的都是在本地外部加载脚本,现在来看看如何在网络上加载Lua脚本。我将上面同样的Lua脚本传到了个人网站的空间中(点我查看)。然后用下面的方式来加载网络上的Lua脚本资源:
![](http://images.cnitblog.com/blog/706907/201501/191527585471877.png)
结束语
今天就先到这里吧。如果有什么错误纰漏之处,希望诸位大神能够批评指正,我将十分感激。有什么建议,欢迎访问我的个人网站(http://chunqiuyiyu.sinaapp.com/),我们共同学习进步。下篇文章再见!
上节说到了Lua脚本与unity3d中C#脚本的数据交互,但是我感觉上节中的数理方式不太好,因为我们是把Lua脚本以字符串形式粘贴到C#脚本中的,如果读取配置数据都这样做的话,那就太可怕了。想想看,一个C#脚本中有一个长长的字符串,十分不方便,也非常混乱。那么有没有更好的处理方式呢?答案是肯定的。这节我们就来看看如何读取外部的Lua脚本吧,这样的话,Lua和C#就是完全分开的,便于维护和理解。
在宿主脚本中(C#中)的处理方式是确定的,主要是如何来获取外部的Lua脚本,以下会详细说明读取外部Lua脚本的三种方式。
静态赋值方式
这是十分方便的方式,也就是符合unity3d特色的拖动赋值。将我们需要的Lua脚本后缀名改为"txt",在C#中用一个“TextAsset”类型的变量来接收它,然后直接可以在属性面板中拖动赋值。C#脚本如下所示:
![](http://images.cnitblog.com/blog/706907/201501/191426221412471.png)
Lua脚本如下所示:
![](http://images.cnitblog.com/blog/706907/201501/191428008442958.png)
面板赋值情况:
![](http://images.cnitblog.com/blog/706907/201501/191429279225195.png)
运行结果(三种方式的运行结果都是一样的):
![](http://images.cnitblog.com/blog/706907/201501/191430104063040.png)
资源加载方式
将脚本文件放入资源文件夹中,用unity3d中的API方法来调用,有以下两种类似的方法,需要注意的是书写资源路径时后缀名的保留与否。
1、将文本形式的Lua脚本放在Resources文件夹下,用Load方式来加载(不需要后缀名):
![](http://images.cnitblog.com/blog/706907/201501/191434591569254.png)
2、将脚本放入资源目录下的任一文件夹中,通过路径来访问得到(需要后缀名):
![](http://images.cnitblog.com/blog/706907/201501/191452027031487.png)
网络加载方式
以上两种方式说的都是在本地外部加载脚本,现在来看看如何在网络上加载Lua脚本。我将上面同样的Lua脚本传到了个人网站的空间中(点我查看)。然后用下面的方式来加载网络上的Lua脚本资源:
![](http://images.cnitblog.com/blog/706907/201501/191527585471877.png)
结束语
今天就先到这里吧。如果有什么错误纰漏之处,希望诸位大神能够批评指正,我将十分感激。有什么建议,欢迎访问我的个人网站(http://chunqiuyiyu.sinaapp.com/),我们共同学习进步。下篇文章再见!
相关文章推荐
- uLua 学习笔记 之一 lua脚本 打包与读取
- 每天学习flash一点(3) flash外部读取xml
- 通过实例学习Virtools脚本语言VSL - 从数组读取字符串
- lua学习笔记 2 android调用Lua。Lua脚本中实现添加Button,并为Button增加Listener
- eLua学习第三课:Lua脚本语言的基础入门教程
- eLua学习第一课:和Lua脚本语言的第一次亲密接触
- [LUA学习笔记02]在C中通过LUA API访问LUA脚本变量
- 【学习笔记】【Cocos2d-x Lua脚本开发】Lua中创建自定义类
- Lua游戏脚本语言入门学习指导 .
- 如何在CEGUI中使用Lua脚本入门学习
- Lua脚本语言入门学习其应用教程
- 通过实例学习Virtools脚本语言VSL - 从数组读取字符串
- DELPHI中集成LUA脚本学习笔记1_初探LUA
- DELPHI中集成LUA脚本学习笔记2_调用LUA函数(详)
- lua学习笔记 1 android 调用Lua, Lua脚本中启动Intent
- lua小脚本还是很像bash shell的,还是看看说明好好学习一下吧.
- 基于ActionScript脚本的Flash读取外部数据的比较——香香
- C++读取lua脚本
- awk学习小记:关于调用外部脚本文件
- 【学习笔记】【Cocos2d-x Lua脚本开发】如何使用Lua脚本调用自定义类