学习tolua#·20多个例子

初始项目搭建

  • clone官方库
  • 新建unity工程
  • 依次把官方库里的Assets和Unity5.x/Assets拷贝到项目Assets里
    学习tolua#·20多个例子_第1张图片

打开unity工程, 开始逐个学习例子,例子目录:
学习tolua#·20多个例子_第2张图片

1. hello world

  • 新建luaState
  • 执行字符串命令print ('hello tolua#')
    学习tolua#·20多个例子_第3张图片

unity的console里找到输出结果(找的不是很容易呀)

2. run scripts from file

  • 添加源码建search path
  • 读取执行lua源文件

脚本内容
学习tolua#·20多个例子_第4张图片
添加脚本搜索路径到luaState里。

执行方法1,dofile:执行脚本内容

执行方法2,require:执行一次脚本内容

输出结果

3. call lua function

  • lua加载执行代码,定义函数
  • c#调用lua定义的函数
  • 释放c#保存的lua函数

定义函数test.luaFunc
学习tolua#·20多个例子_第5张图片

C#获取lua的function

执行方式1:

源码中说要少用,Call实现
学习tolua#·20多个例子_第6张图片
执行方式2:和1差不多,对返回值特殊处理了

释放:

4. c# access lua variable

  • c# 用 luaState来存取lua全局对象


学习tolua#·20多个例子_第7张图片

5. lua coroutine

  • tolua #改写了lua里的协程

6. lua coroutine

  • tolua # 是还实现了一些函数:YieldWaitForEndOfFrame

7. LuaThread

  • tolua # 把lua协程包装成LuaThread,方便c#控制协程的执行。

8. lua access c# array

  • lua访问c#的array

c#里构造一个array,通过函数传参的方式传给lua
学习tolua#·20多个例子_第8张图片
lua里使用接口访问c#的array
学习tolua#·20多个例子_第9张图片

9. lua access c# Dictionary

  • lua读写c#的Dictinary

也是tolua#导出了一些接口,具体看例子就是了。
这个例子里有放置一个tolua#导出自定义c#类接口的样例,可以看看。

10. lua access c# Enum

  • lua访问c#的Enum,Enum在lua里可以获得字符串名字,也可以转成整数。

11. lua access c# delegate

  • lua访问c#的delegate和event

12. lua access unity GameObject

  • lua访问UnityEngine.GameObject

例子是在场景中不停的加白色粒子
学习tolua#·20多个例子_第10张图片
代码很简单,生成一个gameobject,添加个粒子组件。

tolua#生成的LuaBinder.cs导出了大量的接口

学习tolua#·20多个例子_第11张图片
学习tolua#·20多个例子_第12张图片

13. 演示luaClient的使用

luaClient继承MonoBehaviour。

14. lua 针对c#的out 类型参数处理

  • out类型参数,转换成返回值,lua支持多个返回值。

c#里代码

lua里代码
学习tolua#·20多个例子_第13张图片

15. 演示protobuf的使用

  • c#导出,c#自己使用
  • protoc-gen-lua生成,给lua使用。

16. 延时int64使用

  • tolua#提供了个int64的扩展库,把int64分成两个int32了。

17. tolua模拟继承

例子里使用tolua.setpeer扩展包装transform。能够提升性能。
学习tolua#·20多个例子_第14张图片

这样获取transform的position时,就不用每次都从tramsform里查找position属性了。


20万次赋值,耗时统计对比

使用方式 耗时/ms
c# 20.7
lua extend 46.0
lua 160

18. 将lua打包成资源包使用

  • 菜单命令Lua/build bundle files not jit,先打包输出到/Assets/StreamingAssets目录
  • 使用assetBuddle和WWW加载资源。
    学习tolua#·20多个例子_第15张图片
    例子里是加载的本地资源

19. 使用cjson

  • tolua#集成了第三方库cjson
    开启
    学习tolua#·20多个例子_第16张图片
    使用例子
    学习tolua#·20多个例子_第17张图片

20. 使用utf8

  • tolua#扩展的utf8库,使用的lua版本是5.1的,并没有utf8的库。

21. 使用C# string

  • lua使用c#的字符串
    学习tolua#·20多个例子_第18张图片
    学习tolua#·20多个例子_第19张图片

22. 使用反射

  • lua里使用c#的Reflection机制

反射理解:通过实例获取类定义,或者通过字符串名字获取类定义,然后调用获得的类定义中的函数。
例子有些复杂,没细看,应该用不到。

23. 使用C# List

例子太长,不看了。

24. 测试函数重载

C#支持重载函数,这个例子用于测试这个。
没细看。

24. 一些性能测试的例子

里面的第一个例子是这种类型的

这个在lua里的耗时是c#里的8倍,可以优化成2倍。
见第17个例子。

25. 测试lua堆栈,和一些出错情况。

以后细看。

转载于:https://www.cnblogs.com/treert/p/6113397.html

你可能感兴趣的:(学习tolua#·20多个例子)