一。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. docker之容器日志输出与系统时间相差8小时解决办法

    参考:https://blog.csdn.net/eumenides_/article/details/94719944   https://muguang.me/it/2658.html 使用doc ...

  2. adb(Andorid Debug Bridge)安装和使用

    以下是adb工具包最新2017Google官方版下载地址: ADB和Fastboot for Windows https://dl.google.com/android/repository/plat ...

  3. 微信API V3 RESTFUL

    {"code":"SIGN_ERROR","message":"商户未设置加密的密钥,请登录商户平台操作!请参考http://kf ...

  4. 【GStreamer开发】GStreamer播放教程05——色彩平衡

    目标 亮度,对比度,色度和饱和度都是常见的视频调节参数,也是GStreamer里面设置色彩平衡的参数.本教程将展示: 如何发现可用的色彩平衡通道 如何改变它们 介绍 <GStreamer基础教程 ...

  5. PHP 木马代码,

    <?phpheader("content-Type: text/html; charset=utf-8");if(get_magic_quotes_gpc()) foreac ...

  6. Linux基础-12-yum管理软件包

    1. yum的功能 yum是Yellow dog Updater, Modified的缩写,目的就是为了解决RPM的依赖关系的问题,方便使用者进行软件的安装.升级等等工作. 2. 光盘挂载和镜像挂载 ...

  7. iview前台端口设置,跨域端口设置

    前台启动默认端口: 跨域端口: 完毕

  8. 偶数矩阵 Even Parity,UVa 11464

    题目描述 Description 给你一个n*n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1,使得每个元素的上.下.左.右的元素(如果存在的话)之和均为偶数.如图所示的矩阵至少要把3个 ...

  9. 将double转化成string,并保持N位小数

    double dumpSize = (1024000000.1415926535897932384 * 1.0) / 1024 / 1024; string tempStr = to_string(d ...

  10. Mac下Sublime Text3激活码

    方法1: 终端中打开文件 /etc/hosts,插入如下语句 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 方法2: 在s ...