一。local

local函数一定要在调用之前定义(切记,不然会报错或者不能调用该函数)

情况1:监听调此函数后定义

base.model:addlistener("被监听的函数", 监听成功的回调函数)
local function 监听成功的回调函数()
--处理
end

上面代码运行游戏将会报如下错:



handler parameter in addlistener function has to be function, nil not right

二。协程

停止协程前将协程中某变量或组建置空



使用协程做计时功能应注意

1.协程中用到的组件,变量等被置空前,应该将协程置空

2.置空协程之前应停止协程

3.为了确保同一个协程同时只运行一次,可在协程开始前添加安全代码:判断改协程是否存在,存在则停止协程并将协程置空

实现方法:

local function setMyTime()
--注意(3)
if this.countdown then
coroutine.stop(this.countdown)
this.countdown = nil
end
this.countdown = coroutine.start(function()
while true do
this.tm=this.tm-1--用到的变量
coroutine.wait(1)
end
end)
end
注意(2)
if this.countdown then
coroutine.stop(this.countdown)
--注意(1)
this.countdown = nil
end
--假设此时需要对this.tm置空
this.tm=nil

三。判断Table表是否为空

确定表是否为空的最有效方式(即,当前不包含数组样式值或字典样式值)

方法一:

if not next(myTable) then
-- Table is empty
end

注意:这里的#操作符不够用,因为它只对表中的数组样式值进行操作 - 因此#{test=2}无法区分,#{}因为两者都返回0.还要注意检查表变量是否nil不够,因为我不寻找零值,而是具有0个条目(即{})的表格。

方法二:

if next(myTable) == nil then
-- myTable is empty
end

测试:

local myTable={[false]=0}
if not next(myTable) then
printlog("空表","shirln**********")
else
printlog("非空","shirln&&&&&&&&&&&")
end
if next(myTable) == nil then
printlog("空表","shirln!!!!!!!!")
else
printlog("非空","shirln@@@@@@@@@@@")
end

输出:

printlog("空表","shirln**********")
printlog("非空","shirln@@@@@@@@@@@")

可见,方法二比方法一更有效一些

四。字符串的拼接使用string.format()

如果需要显示类似于"10%"这样的字符串,如果直接使用string.format("%s%",10)会报如下错误:



可以考虑把百分号"%"符号当成一个值:string.format("%s%s",10,"%")

五。更换图片sprite报错

代码如下:

function asset(path)
return Asset:LoadAsset(path)
end
utils.findimage(this.gameObject, "bg").sprite = asset(path)

错误:



原因:Asset:LoadAsset加载的是任意资源,我们需要的是sprite资源

解决办法:

function asset(path)
return LoadSprite(path)
end
utils.findimage(this.gameObject, "bg").sprite = asset(path)

lua游戏开发易错踩坑录的更多相关文章

  1. lua游戏开发实践指南学习笔记1

    本文是依据lua游戏开发实践指南做的一些学习笔记,仅用于继续自己学习的一些知识. Lua基础 1.  语言定义: 在lua语言中,标识符有非常大的灵活性(变量和函数名),只是用户不呢个以数字作为起始符 ...

  2. 踩坑录-mysql不允许远程连接(错误码:1130) Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server“

    每次搭建mysql环境都会遇见同样的问题,在此分享一下踩坑笔录. 一.问题描述 安装成功后,本地直接链接远程mysql,默认为不允许远程访问,则客户端提示1130 - Host'xxx.xxx.xxx ...

  3. Cocos2d-x Lua游戏开发Mac环境搭建以及一点点感悟

    接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...

  4. Cocos 2d-X Lua游戏开发Mac环境搭建以及一点点感悟

    接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...

  5. 《Lua游戏开发实践指南》读后感

    书籍地址:http://book.douban.com/subject/20392269/ 一句话点评该书:想用Lua作游戏脚本开发的同学值得一读! (一)本书特点 市面专门讲Lua的中文书籍非常少, ...

  6. Android SDK 开发——发布使用踩坑之路

    前言 在 Android 开发过程中,有些功能是通用的,或者是多个业务方都需要使用的. 为了统一功能逻辑及避免重复开发,因此将该功能开发成一个 SDK 是相当有必要的. 背景 刚好最近自己遇到了类似需 ...

  7. Lua游戏开发之时区问题

    目前大部分游戏都采用了Lua语言进行功能开发,在进行多语种发行的时候就会遇到时区显示的问题.以韩国版本为例,场景如下: 1.服务器处于固定的位置,比如放在首尔机房: 2.玩家所处的位置不确定,可能在韩 ...

  8. 读Lua游戏开发实践指南

    11月11日开读,到今天正好一个月. 起因是被裁员之后,发现很多公司都在使用lua编写cocos2d-x游戏,原因是上手快,技术人员比较便宜. 如果引擎封装比较好,几乎在lua里写写基本逻辑就行了,不 ...

  9. Lua游戏开发参考资料收集

    table {border-collapse:collapse;} List of game engines that use lua: 2D Agen (Lua; Windows) Blitwiza ...

随机推荐

  1. Web书写Test Case时需要考虑的检查点

    通常书写Test Case时需要考虑的检查点: 一. 对于屏幕显示来说包括:1.检查显示的布局:2.检查域和按钮的顺序:3.检查域的尺寸:4.检查字体的大小和风格:5.检查文本的含义:6.检查拼写错误 ...

  2. 支持“ReportDbContext”上下文的模型已在数据库创建后发生更改

    支持“ReportDbContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkI ...

  3. mysql大小写敏感配置

    mysql大小写敏感配置show global variables like '%lower_case%'; show global variables like '%lower_case%'; &l ...

  4. Hive 企业调优

    9.企业级调优 9.1 Fetch 抓取 Fetch 抓取:Hive 中对某些情况的查询可以不必使用 MapReduce 计算: hive.fetch.task.conversion:more 9.2 ...

  5. 030 Android 第三方开源下拉框:NiceSpinner的使用+自定义Button样式+shape绘制控件背景图+图片选择器(selector)

    1.NiceSpinner下拉框控件介绍 Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框 ...

  6. [VS] - Visual Studio 智能感知无法启用 之解决

    背景 VS 2017 智能感知无法使用,重置 "导入和导出设置..." 后仍无法使用. 解决 我在 VS 上安装了 Resharper 的,猜测可能跟其配置有关,重置 Intell ...

  7. todo---callback

    todo---callback https://blog.csdn.net/u010158267/article/details/51426963/

  8. 十分钟快速入门 Python,看完即会,不用收藏!

    本文以 Eric Matthes 的<Python编程:从入门到实践>为基础,以有一定其他语言经验的程序员视角,对书中内容提炼总结,化繁为简,将这本书的精髓融合成一篇10分钟能读完的文章. ...

  9. MyBatis逆向工程生成配置 generator (生成pojo、mapper.xml、mapper.java)

    MyBatis逆向工程生成 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml ...

  10. sendmail邮箱部署设置

    前言:在使用一些shell脚本进行监控时需要通过发送报警邮件来提醒,下面通过部署简单的sendmail来实现简单的邮件发送. 1.安装 mailx 和 sendmail: yum install ma ...