Lua语言开发
文章平均质量分 64
Lua[1] 是一个小巧的脚本语言。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
heyuchang666
这个作者很懒,什么都没留下…
展开
-
Arpg 游戏 对象实体 entity(二)
设计一个entity class,用于创建和管理游戏世界中的实体对象。这个类包含了大量的函数,用于处理实体的各种行为和属性,例如创建、移动、播放动画、同步状态等。原创 2024-07-29 20:41:42 · 873 阅读 · 3 评论 -
Arpg 游戏 对象实体 entity(一)
设计一个entity class,用于创建和管理游戏世界中的实体对象。这个类包含了大量的函数,用于处理实体的各种行为和属性,例如创建、移动、播放动画、同步状态等。原创 2024-07-28 15:46:33 · 1045 阅读 · 1 评论 -
lua 游戏架构 之 游戏 AI (九)ai_mgr Ai管理
这段代码为游戏中的AI组件提供了一个灵活的管理框架,根据不同的游戏场景和实体状态动态地切换和控制AI行为。原创 2024-07-26 14:50:22 · 1479 阅读 · 0 评论 -
lua 游戏架构 之 游戏 AI (八)ai_tbl 行为和优先级
这段代码为游戏的AI系统提供了一个灵活的框架,根据不同的AI行为分配不同的处理脚本和优先级。通过这种方式,可以轻松地管理和扩展AI的行为逻辑,同时保持代码的组织性和可维护性。原创 2024-07-26 13:10:05 · 1014 阅读 · 0 评论 -
lua 游戏架构 之 游戏 AI (七)ai_dead
`ai_dead`类的目的是在AI实体死亡时,提供一套标准的行为和逻辑处理,确保游戏内死亡状态的表现和交互符合预期。原创 2024-07-25 08:12:12 · 2966 阅读 · 19 评论 -
lua 游戏架构 之 游戏 AI (六)ai_auto_skill
定义一个为`ai_auto_skill`的类,继承自`ai_base`类。`ai_auto_skill`类的目的是在AI自动战斗模式下,根据配置和条件自动选择并使用技能。原创 2024-07-25 08:00:31 · 808 阅读 · 1 评论 -
lua 游戏架构 之 游戏 AI (五)ai_autofight_find_way
这个类的目的是在自动战斗模式下,根据游戏世界的当前状态和配置,为AI实体找到合适的移动路径。原创 2024-07-24 08:47:27 · 1590 阅读 · 5 评论 -
lua 游戏架构 之 游戏 AI (四)ai_autofight_find_target
这个脚本为游戏中的AI提供了一个自动战斗中寻找目标的基础框架,可以根据具体游戏的需求进行扩展和修改。原创 2024-07-24 08:37:04 · 1017 阅读 · 1 评论 -
lua 游戏架构 之 游戏 AI (三)ai_attack
游戏中的AI提供了一个攻击行为的基础框架,可以根据具体游戏的需求进行扩展和修改原创 2024-07-23 08:51:01 · 1330 阅读 · 0 评论 -
lua 游戏架构 之 游戏 AI (二)ai_base_move_base
这个脚本的作用是为游戏中的AI实体提供移动逻辑的基类,包括移动能力的管理、验证实体是否可以移动、以及根据实体的状态和环境播放合适的行走动画。通过继承和扩展这个基础类,可以为不同类型的AI实体实现具体的移动行为。原创 2024-07-23 07:48:28 · 959 阅读 · 1 评论 -
lua 游戏架构 之 游戏 AI (一)ai_base
定义了一套接口和属性,可以基于这个基础类派生出具有特定行为的AI组件。例如,可以创建追逐敌人的AI、巡逻的AI或使用特定策略的AI等,都继承自这个基础类原创 2024-07-23 07:29:11 · 658 阅读 · 1 评论 -
lua 游戏架构 之 SceneLoad场景加载之 SceneManager (四)
SceneManager 类提供了一个强大且灵活的场景管理框架,使得游戏开发人员可以更容易地处理复杂的场景切换和资源管理任务原创 2024-07-21 15:33:13 · 2149 阅读 · 5 评论 -
lua 实现 函数 判断两个时间戳是否在同一天
用于判断两个时间戳是否在同一天原创 2024-07-21 13:35:02 · 516 阅读 · 0 评论 -
lua 写一个函数 判断两个时间戳是否在同一周
可以用于需要根据周来管理任务或活动的场景,例如每周发放奖励、每周统计数据等。原创 2024-07-21 13:27:50 · 317 阅读 · 1 评论 -
lua 写一个 不同时区之间转换日期和时间 函数
该函数的主要功能是根据给定的时区偏移量调整时间戳,并返回格式化后的日期字符串。如果`dontFixForTimeOffset`为真或者时间戳小于31536001(即1970年1月1日之后的秒数),则直接返回原始时间戳的格式化日期。原创 2024-07-20 23:34:45 · 578 阅读 · 0 评论 -
lua 游戏架构 之 SceneLoad场景加载之 SceneBase (三)
场景基类SceneBase ,这个类提供了一个框架,用于处理场景的加载、初始化、激活、释放等生命周期管理,以及进度更新和用户界面显示。开发者需要根据具体的场景需求,重写一些虚函数以实现特定的功能。原创 2024-07-20 22:35:22 · 2446 阅读 · 14 评论 -
lua 游戏架构 之 SceneLoad场景加载(二)
`NormalSceneLoad`类主要用于处理普通场景的加载和释放。原创 2024-07-19 22:25:56 · 1525 阅读 · 5 评论 -
lua 游戏架构 之 SceneLoad场景加载(一)
设计一个为`BaseSceneLoad` class,用于处理场景加载的相关操作 ,主要作用是提供了一个通用的场景加载框架原创 2024-07-19 21:35:46 · 621 阅读 · 1 评论 -
lua 游戏架构 之 LoaderWallet 异步加载
异步加载资源,并允许用户指定加载完成后的回调函数。这对于需要异步加载资源并处理加载结果的应用场景非常有用,比如游戏中的资源预加载、UI资源的动态加载等。原创 2024-07-18 21:15:47 · 1517 阅读 · 6 评论 -
lua 游戏架构 之 TablePool`对象池
管理一个对象池。对象池是一种用于优化内存使用的技术,通过重用对象而不是频繁地创建和销毁对象,从而减少内存分配和垃圾回收的开销。原创 2024-07-18 19:10:46 · 701 阅读 · 4 评论 -
lua 游戏架构 之 资源加载 LoaderManager (一)
通过对象池管理资源加载器,可以减少对象的频繁创建和销毁,提高性能原创 2024-07-17 21:08:54 · 755 阅读 · 3 评论 -
lua 实例化 StateMachine状态机, 捕鱼游戏状态机
举例 做一个 捕鱼游戏状态机,确保游戏在不同状态下能够正确地响应玩家的操作。通过状态机模式,可以清晰地定义和切换游戏的不同状态,提高代码的可维护性和可扩展性。原创 2024-07-16 20:29:03 · 306 阅读 · 0 评论 -
lua 实现一个 StateMachine状态机
定义了一个状态机(StateMachine)类,用于管理对象在不同状态之间的转换和状态更新原创 2024-07-15 18:54:36 · 744 阅读 · 2 评论 -
代码过滤富文本的粗体 斜体 颜色 空格
开发聊天过程中,可能会用到 lua 过滤富文本的粗体 斜体 颜色的逻辑。比较简单直接看代码原创 2023-01-31 18:36:51 · 499 阅读 · 1 评论 -
计算字符是否为中文 简单判断
计算字符是否为中文原创 2023-01-29 16:30:39 · 405 阅读 · 0 评论 -
StringUtil startWith
StringUtil 类 封装一些常用的 string 方法原创 2023-01-28 18:56:30 · 559 阅读 · 0 评论 -
lua 计算身份证校验
身份证最后一位是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;2、将这17位数字和系数相乘的结果相加;3、用加出来和除以11,看余数是多少;4、余数只可能有0 1 2 3 4 5 ...原创 2020-02-21 17:35:10 · 1142 阅读 · 1 评论 -
判断两个时间戳是否同一周
---@param stampA number---@param stampB numberfunction ModelTime.isBetweenOneWeek(stampA, stampB) --两个日期的差值与较晚日期的weekDay(周中天数)之和是否小于7 --diff为较早日期减去较晚日期的差值 local diff = 0 --取得较晚的日期 ...原创 2020-02-19 10:24:04 · 1862 阅读 · 2 评论 -
判断是否时同一天
---判断是否时同一天---@param stampA number---@param stampB number---@param resetInfo table|nil {[hour]=5, [min]=0, [seconds]=0, } @重置时间---@return booleanfunction ModelTime.isSameDay(stampA, stampB, rese...原创 2020-02-18 14:40:14 · 1076 阅读 · 0 评论 -
lua数据结构之table的内部实现
一、table结构1、Table结构体首先了解一下table结构的组成结构,table是存放在GCObject里的。结构如下:typedef struct Table { CommonHeader; lu_byte flags; /* 1<<p means tagmethod(p) is not present */ lu_byte lsizenode; /* 以2的...转载 2018-02-10 17:30:52 · 1690 阅读 · 0 评论 -
lua中的sort排序 反自反性 非对称性 传递性
ua中对table的排序一般是用lua自带的table.sort()函数排序,一般不采用自己写的排序的方式,以下来说一说table.sort()排序和在工作中遇到的问题 1.排序的方式table.sort(tbl,function(a,b) return a > bend)以上是一个简单的例子,得到的效果是对于待排序的数据的一个升序,你这样认为就是错了转载 2018-01-11 16:42:18 · 1464 阅读 · 0 评论 -
游戏开发基础数据结构
据我所接触到的国内游戏公司,包括我们自己公司在内,游戏数据大都是基于 excel 这种二维表来表达的。我把它称为 csv 模式。这种模式的特点是,基础数据结构基于若干张二维表,每张表有不确定的行数,但每行有固定了列数。用它做基础数据结构的缺陷是很明显的,比如它很难表达树状层级结构。这往往就依赖做一个中间层,规范一些使用格式,在其上模拟出复杂数据结构。转载 2017-07-20 18:16:26 · 1006 阅读 · 0 评论 -
Lua内置库的实现(一)_string模块
Lua的string库相较其它许多动态语言的string库来说,可谓短小精悍。不到千行C代码就实现了一个简单使用的字符串模式匹配模块。虽然功能上比正则表达式有所欠缺,但考虑到代码体积和功能比,这应该是一个相当漂亮的平衡(C 语言社区中常用的正则表达式库PCRE的个头整体比lua的实现还要大好几倍)。若需要更强大的字符串处理功能,Lua的作者之一Roberto给出了一个比正则表达式更强大的选择LPEG 6。有这一轻一重两大利器,在Lua社区中,很少有人再用正则表达式了。string模块实现在lstrlib.c原创 2017-04-22 18:02:57 · 2093 阅读 · 0 评论 -
Lua内置库的实现(一)_math模块(二)_math模块API实现
math模块内的各个数学函数的实现中规中矩,就是使用的Lua手册里给出的API来实现的。 Lua的扩展方式是编写一个原型为int lua_CFunction (lua_State *L)的函数。L对于使用者来说,不必关心其内部结构。实际上,公开API定义所在的lua. h中也没有lua_State的结构定义。对于一个用C编写的系统,模块化设计的重点在于接口的简洁和稳定。数据结构的细节和内存布局最好能藏在实现层面,Lua的API设计在这方面做了一个很好的示范。这个函数通常不会也不建议被C程序的其它部分直接调用原创 2017-04-12 19:25:10 · 1849 阅读 · 0 评论 -
Lua内置库的实现(一)_math模块(一)_从math模块看Lua的模块注册机制
Lua5.2自带了几个库,实现了一般应用最基本的需求。这些库的实现仅仅使用了Lua官方手册中提到的API,对Lua核心部分的代码几乎没有依赖,所以最易于阅读。阅读这些库的实现,也可以加深对Lua API的印象,方便我们自己扩展Lua。 注意:在看这个之前要先了解Lua和C之间的交换数据的机制,因为Lua和C之间交互有2个问题:1.动态和静态类型系统的不匹配,2.自动和手动内存管理的不一致。(Lua 与C调用点击连接) 数学库是最简单的一个。它导入了若干数学函数,和两个常量pi与huge。下原创 2017-04-05 20:38:51 · 1742 阅读 · 0 评论 -
Lua内嵌库概念
作为嵌入式语言,其实完全可以不提供任何库及函数。全部由宿主系统注入到State中即可。也的确有许多系统是这么用的。但Lua的官方版本还是提供了不少必要的库。尤其是一些基础函数如pairs,error,setmetatable,type等等,完成了语言的一些基本特性,几乎很难不使用。 而coroutine,string,table,math等等库,也很常用。Lua提供了一套简洁的方案,允许你自由加载你需要的部分,以控制最终执行文件的体积和内存的占用量。主动加载这些内建库进入lua_State原创 2017-04-05 16:12:31 · 960 阅读 · 0 评论 -
Lua代码翻译及预编译字节码
Lua在早期几乎都是被用来嵌入到其它系统中使用,所以源代码通常被编译成动态库或静态库被宿主系统加载或链接。但随着Lua的第三方库越来越丰富,人们开始倾向于把Lua作为一门独立语言来使用。Lua的官方版本里也提供了一个简单的独立解析器,便是lua.c所实现的这个。并有luac.c实现了一个简单的字节码编译器,可以预编译文本的Lua源程序。原创 2017-04-04 17:37:16 · 5530 阅读 · 0 评论 -
Lua代码风格
Lua使用Clean C[5](Clean C是标准C/C++的一个子集。它只包含了C语言中一些必要特性。这样方便把Lua发布到更多的可能对C语言支持不完整的平台上。比如,对于没有 ctype.h 的C语言编译环境,Lua提供了 lctype.c 实现了一些兼容函数。)编写的源代码模块划分清晰,大部分模块被分解在不同的 .c 文件中实现,以同名的.h文件描述模块导出的接口。比如,lstring.c实现了Lua虚拟机中字符串池的相关功能,而这部分的内部接口则在lstring.h中描述。原创 2017-04-01 11:47:13 · 912 阅读 · 0 评论 -
Lua 源文件划分
从官网下载到Lua 的源代码后,展开压缩包,会发现源代码文件全部放在src子目录下。这些文件根据实现功能的不同,可以分为四部分。1.虚拟机运转的核心功能2.源代码解析以及预编译字节码3.内嵌库4.可执行的解析器,字节码编译器原创 2017-03-31 18:21:56 · 747 阅读 · 0 评论 -
Lua函数的多个返回值
Lua中的函数的一个很特殊也很有用的性质,即可以有多个返回值。包括一些内置的函数就是这样。比如string.find函数,在给定的字符串中查找一个pattern,如果有匹配的部分,则返回对应的头、尾的两个索引值;如果不存在匹配,则返回nil。当然,用户定义的函数也可以有多个返回值,通过return关键字返回多个结果即可。比如一个返回数组中最大值及其索引的函数:转载 2016-09-20 15:23:07 · 9877 阅读 · 0 评论