项目中一直使用tolua框架,底层使用C#开发,逻辑使用lua开发。借助tolua的源码,研究一下lua与C#是如何互相调用的,然后自己写了个简单的demo作为记录。
Lua笔记 迭代器
Lua中的迭代器提供的是一种遍历表中所有元素的机制,它通常是函数的形式,每次调用函数,返回“下一个”值。Lua中的迭代器有两种实现方式,基于闭包(closure)或者基于协程(coroutine)。以下会通过一个实例来分别讨论两种迭代器的实现。
Lua笔记 效率&性能
本文使用对比测评的方式比较了几种Lua中代码和方式,并做了简要的总结和分析。结合其中结论,可指导写出质量更高、性能更优的脚本。本文基于Lua5.1,大部分内容也同样适用于Lua5.2和5.3。本文中引用到的Lua源代码都取自Lua 5.1.5版本。
Unity3D UGUI 源码学习 其它
在UGUI中遇到的其它类,统一放在一起了。主要包括CoroutineTween
、IndexedSet
、ListPool
、ReflectionMethodsCache
和SetPropertyUtility
等。
Unity3D UGUI 源码学习 BaseMeshEffect
BaseMeshEffect
是用于修改生成的网格的特效类的抽象基类,Outline
和Shadow
等都是其衍生类或衍生类的衍生类。
Unity3D UGUI 源码学习 Mask
UI结构中的Mask
组件用于对其子节点产生遮罩。通过修改模板值来实现其子结点中各MaskableGraphic
组件的遮罩控制。阅读本文之前强烈建议先阅读Unity3D UGUI 源码学习 MaskableGraphic。
Unity3D UGUI 源码学习 Button
UI中用于响应点击事件的组件。阅读本文之前强烈建议先阅读Unity3D UGUI 源码学习 Selectable。
1 | public class Button : Selectable, IPointerClickHandler, ISubmitHandler |
继承自Selectable
,实现了IPointerClickHandler
和ISubmitHandler
。
Unity3D UGUI 源码学习 Text
Text
用于在UI中绘制文本标签。文字绘制是比较复杂的过程,Text
和Unity中的很多其它类共同完成这一绘制过程。本文会围绕UGUI中的Text
类并拓展到相关的其它类,以学习和了解文本是如何绘制出来的。
Unity3D UGUI 源码学习 Image
Image
是UGUI中最常用的组件之一,用于在UI中显示一个图片(Sprite),继承自MaskableGraphic
,覆写了Graphic
和MaskableGraphic
的一些方法。同时实现了三个接口,ISerializationCallbackReceiver
接收序列化和反序列化完成的回调,ILayoutElement
作为自动布局元素,实现了计算自动布局尺寸的接口,ICanvasRaycastFilter
实现了用于处理射线投射时过滤的方法,后边会一一详述。
OSX使用sed移除UTF-8中的BOM
最近遇到的一个问题是在OSX和iOS上,带BOM的UTF-8编码格式的文件(主要是Excel导出来的lua配表)无法正常工作。于是在打包脚本中增加了一个环节去除各UTF-8编码文件中可能出现的BOM头。