cocos2dx-lua开发旅程(一)

2023-11-07

最近要做一个手游项目,打算用cocos2dx来做,我也是初学者,网上很多书籍和资料都是采用cocos2dx的c++版本来做开发示例的

很少关于cocos2dx和lua怎么结合在实际项目中的教程,这使得我很痛苦,所以我写下这一系列教程,希望跟我一样的同学能得到小需帮助


首先,我讲讲我为什么要用cocos2dx+lua来开发吧

我个人觉得,对于开发一些休闲类、性能要求不太高的游戏,应该采用cocos2dx+lua、cocos2dx+html5、cocos2dx+javascript等来会使开发的效率提高

原因:

1、我们不用考虑很多c++中最烦的指针没师范而导致的内存泄漏问题,虽然说cocos2dx已经有一套内存管理机制,但是对于我这种渣渣程序员来说

我绝对保证,我写的程序一旦大了,肯定会有内存泄漏的发生,而且写c++程序还有很多坑,比如以后如果要做游戏热更,那肯定是绝对的麻烦,甚至可以说无法完成

2、用lua等脚本语言来开发游戏逻辑部分代码将变得非常简便,cocos2dx(我使用的是3.4版本)目前提供了一个马上刷新加载程序的功能,使得我们一旦修改了代码,可以不用像C++那样编译半天之后才看效果,只需按一下F5就可以了,几乎达到了“修改即看”的效果,方便我们调整ui布局等等

3、用lua脚本之后,我们就可以少考虑内存泄漏问题了,我个人对于这东西很是害怕,所以如果不用考虑那么多,将利于我把精力放在其他思考地方上去,而且使用lua脚本可以执行热更,目前很多手游都的热更都是游戏的逻辑代码,其中很多就是用lua写的,C++的要重新编译,估计实现不容易吧(未探究,知道的同学告诉我一下哈,谢谢!)


至于说为什么用cocos2dx-lua而不用cocos2dx-html5或者cocos2dx-javascript,我认为这个就要根据你们项目组情况咯,总之走C++和脚本语言开发游戏的方向肯定是对的

好了,说了这么多废话,现在来开始讲一讲我最新学到的成果,有什么不对的地方请大神们多多指教,也欢迎大家与我交流,QQ:1609097487(不过我比较少上Q)


首先有些cocos2dx-lua的基础教程,在cocos2dx的官网上已经有了,这部分的东西我就不多说了,直接拉个链接给你们,打打基础再看我写的东西吧:

Quick-Cocos2d-x v3.3小白书系列教程

Quick-Cocos2d-x初学者游戏教程


看完这两个教程,基本上你对cocos2dx-quick就有个基础了解

好接下来我要说教程上没说,但是有可能同学们会比较困惑的一些地方啦

首先,我们说的代码结构都以qucik-cocos2dx建立的代码结构来进行说明(其实用cocos命令建立的结构也是差不多)


疑惑一:有很多直接addTo、move等方法,我在cocos2dx的API中没找到啊,它们在哪里?

答:在src/cocos/framework/extends里面,有很多类似NodeEx.lua的文件,就是在这里啦,quick在这里对一些常见的类进行了一些方法的扩充,使得我们的代码简化了


疑惑二:有个什么class的用来创建类的,我在哪里可以看到它的源码?

答:在src/cocos/cocos2d/functions.lua文件里

lua没有类的语法,但是cocos2dx利用类的概念跟lua的特性模拟了类的实现,

实现你们都看到了,在一开始定义一个本地变量:

local cc = class("Test")

然后实现方法:

function cc:method()

...

end

最后返回最开始的变量:

return cc


疑惑三:你怎么知道这些东西的?

答:首先出错时看编译器的提示,里面的debug.strace会说哪个lua脚本出错的,然后再看看quick中的lua源代码,最后唯有百度咯(很多我也是最后百度= =)


好,先写到这里,写本文的时候我也是边学边写的状态,所以写出来的都不是经验之谈,但是我仍然希望能对你有帮助,下次我将写一些开发中遇到的问题,以及我的解决方法跟大家共享,谢谢各位



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocos2dx-lua开发旅程(一) 的相关文章

  • 4.3.1 位置变化动作

    4 3 1 位置变化动作 2013 05 21 10 12 火烈鸟网络科技 人民邮电出版社 我要评论 0 字号 T T Cocos2d x高级开发教程 第4章动作 在这一章中 我们将为大家详细介绍各种动作的使用方法 读完本章后 读者将会学到
  • fvf采用另外一种方式渲染

    if FAILED hr getActiveD3D9Device gt SetVertexDeclaration d3ddecl gt getD3DVertexDeclaration getGlobalInstanceVertexBuffe
  • Cocos2d-x Js Binding 的手动绑定实现

    http www ityran com archives 4902 Cocos2d x Js Binding 的手动绑定实现 一叶 cocos2d x 08 13 2304 4条评论 随着 Cocos2d x 的发展 Cocos2d htm
  • cocos2dx使用TiledMap模拟3D地图场景----斜45度2D地图的靠墙直线移动

    基于cocos2dx引擎的第三人称射击游戏 角色使用3D模型 地图采用2 5D 定制地图编辑系统抛开不谈 这里最大可能的挖掘现有工具TiledMap的潜力 完成超2 5D地图的实现 使用2D地图高度模拟3D场景 主要有两个要点需要解决 1
  • CCMoveBy和CCMoveTo有什么区别?

    CCMoveBy和CCMoveTo有什么区别 cocos2d里面的CCMoveBy 和CCMoveTo有什么区别 含义不同的地方在那块 那位高人给解释一下 谢谢 insul 2010 09 14 18 52 by是相对于当前位置 to是到该
  • Cocos2d-x JSB 自动绑定bindings-generator (以下简称B-G) 使用心得

    文章转载自 http www cocoachina com bbs read php tid 177904 B G 是什么 当使用JSB的时候 如果你想要使用的C 的类或者方法没有在已有JSB中被绑定 这时候 就可以使用B G 它可以生成相
  • Cocos2dx中文乱码问题

    最开始在网上找的一个方法 结果在wp8上报错 在windows环境下使用visual studio 开发cocos2d x 由于visual studio 默认编码为GBK 格式 而cocos2d x引擎默认编码为UTF 8 如果有用到中文
  • 关于visual studio中的$(ConfigurationName)疑问

    关于visual studio中的 ConfigurationName 疑问 2012 12 02 16 09 15 转载 标签 it 分类 程序员之路 关于vs中的各种路径的值de查看方法 来源 http social msdn micr
  • CocosCreator 游戏小地图/地图雷达

    更多笔记和源码请关注 微信公众号 CocosCreator笔记 演示 ps 请注意左上角 技术摘要 大地图与小地图坐标转换 更新小地图中元素及视口位置 拖动小地图中视口位置 更新Main Camera位置 实现 01 小地图 图片 的宽高比
  • Cocos2dx-OpenGL ES2.0教程:编写自己的shader(2)

    在上篇文章中 我给大家介绍了如何在cocos2d x里面绘制一个三角形 当时我们使用的是cocos2d x引擎自带的shader和一些辅助函数 在本文中 我将演示一下如何编写自己的shader 同时 我们还会介绍VBO 顶点缓冲区对象 和V
  • Cocos2dx Android 构建错误:“arm-linux-androideabi-g++:没有这样的文件或目录”

    我下载了最新的cocos2dx 3 10 和NDK r11 我执行的时候出现以下错误cocos compile p android android studio Error AndroidDev android ndk r11 toolch
  • 如何在Cocos2d-X中交换CCSprite对象中的精灵

    我有一个从 CCSprite 继承的对象 我想从这个对象内部改变图像 如何在 Cocos2d X 中更改图像 精灵 而不创建新的 CCSprite 对象 谢谢 阿德里安 mySprite gt setTexture CCTextureCac
  • Android 游戏的 Cocos2d-x 与 cocos2d-android

    在我的一个项目中使用 cocos2d iphone 后 我试图决定应该在 Android 游戏中使用哪种风格的 Cocos2d 我个人的优点和缺点清单 Cocos2d x pros 稍后将游戏带到 iOS 上应该会更容易 其他平台也可能如此
  • 如何使用 Marmalade 编译 Cocos2d-X?

    有谁知道教程 或者三个简单的步骤来编译我用 Cocos2d x 和 Marmalade 编写的代码 我想将我已经在 Cocos2d X 中编译和使用的代码插入到 marmalade 项目中 然后进行编译 很多地方都写得很简单 但我却很难做到
  • 如何制作双向平台box2d主体?

    我使用 box2d 创建了平台 我想要 box2d 身体检测而不是动态检测 Box2d 形状将执行以下操作 在某些条件下检测碰撞 在某些情况下不检测碰撞 两种条件都适用于同一 box2d 对象中的不同条件 任何想法都会有很大帮助 提前致谢
  • Cocos2d-x - 如何将CCLayer的一部分设置为透明?

    我是新手cocos2d x我需要你的帮助 我需要使图层的触摸部分透明 如何使图层的一部分透明 我曾想过使用 ClippingNode 但我找不到示例或文档 我使用C 谢谢 在所有cocos2d x版本中添加的TestCpp项目中 您可以找到
  • 检查动画是否在 cocos2d-x 中运行

    我目前正在学习cocos2D x并正在做一些精灵动画 我的目标是 当单击按钮时 对象会向左移动并带有一些动画 现在 如果您快速单击多次 动画就会立即发生 看起来熊正在希望而不是行走 解决方案看起来很简单 我应该检查动画是否已经在运行以及是否
  • 嵌入式 cocos2d-js 应用程序可以回调 C++ 吗?

    我正在研究通过将 cocos2d js 作为视图嵌入现有 iOS 应用程序中来使用它的可能性 为了完成这项工作 我需要在 cocos2d 和周围的应用程序之间进行双向通信 经过一些初步调查 我确定可以致电in到 cocos 使用Script
  • 如何在cocos2dx 3.0中调用callfunc函数

    我必须将 Objective C 转换为 C 11 我坚持使用以下语法 我已在 testcpp 中引用并尝试以下语法 这是我尝试过的代码 this gt runAction Sequence create blink CallFunc cr
  • 在 Cocos2dx 中使用 CREATE_FUNC

    谁能解释一下为什么我们需要在Cocos2dx中使用CREATE FUNC 我在HelloWorld示例中看到了它 但不太理解它 请告诉我更多细节 谢谢 我们不需要使用它 它是一个扩展为以下内容的辅助宏 define a create fun

随机推荐

  • python2.7下input()函数输入参数

    使用input 函数 在运行时输入字符需要用引号括起来 但在交互模式下不需要 question Traceback most recent call last File
  • 从零编写c++之http服务器(3)-http服务

    http全称超文本传输协议 可调试性高 扩展性也强 上两个篇章我们已经拥有了epoll事件驱动框架和线程池处理网络事件 接下来我们要先写一个基础网络套接字 然后在此基础上扩展出http的套接字 献上类图如下 完整源码见
  • 也要适当晋升

    和一个哥们聊天 说到要不要当组长这个话题 我说我被无良组长们坑坏了 自己搞不定老往下属身上推 我如果当组长 肯定也是无良组长 水平菜 成为自己讨厌的人 他说 哥们 你还是不懂职场规则啊 别说让当 就是不让当 也要创造条件去当 公司资源可以提
  • connect to host master port 22: No route to host 问题解决方案

    问题描述 connect to host master port 22 No route to host 问题分析 先去ifconfig能不能出现你自己配的网卡 一般情况是不能的 或者重启网卡会启动失败 当然了使用远程连接工具也会连接不上
  • h5微信公众号分享:错误40048,invalid url domain与错误63002,invalid signature问题解决

    1 错误 63002 config fail Error 系统错误 错误码 63002 invalid signature 20201207 15 10 10 1 发送当前接口请求的页面URL需要跟后台协商 是否需要编码 以什么样的形式发送
  • 【Docker】Swarm集群的配置与管理

    实现Docker Swarm集群部署安装 在线创建Swarm集群和自动编配 安装Docker Swarm 1 通过实训平台进入到操作系统界面 该实验需要两台虚拟机 首先修改主机名 修改第一台主机的主机名叫smoker 第二台主机的主机名叫j
  • 【Maki ‘ s Lab学习讲座】超前学习法

    作者 Maki Maki的完美算术教室 排版 Penguin IT鹅 当人们愉快地承受苦难时 苦难也会变得美丽 这不是麻木 而是由于心灵的伟大 亚里士多德 Maki s Lab简介 Maki s Lab核心成员来自多伦多大学 清华大学等世界
  • 咕咕驴AI短视频换脸小程序源码搭建教程

    咕咕驴AI短视频一键换脸小程序源码 带流量主搭建教程 源码下载 https github com peizhou faceoff 下载源码到本地后 修改appid 修改为你自己的微信小程序 打开 dist pages ele index j
  • python笔记7--常见异常处理

    python笔记7 常见异常处理 功能 代码 说明 异常处理是提高程序稳定 可靠的一个重要因素 笔者最近整理了下一常用的python异常处理方法 以及使用案例 记录在此处以便后续查阅 功能 包括raise try except两中常见异常处
  • 软件设计七大原则

    一 开闭原则定义 一个软件实体如类 模块函数应该对扩展开放 对修改关闭 是其他原则的基础或者说是总宗旨 其他原则可以说是此原则的一个延伸 说人话 不修改现有代码的基础上 去新增功能 二 依赖倒置原则定义 高层模块不应该依赖低层模块 二者都应
  • 头文件中string、string.h和cstring的区别

    string和string h的区别 h后缀都是c的头文件 与其相对应的不加 h的都是c 的头文件 在c 标准化的过程中 为了表示头文件来源于c 有时也在前面加上c 比如cmath就来源于math h 但是string和string h没有
  • Windows10子系统WSL修改默认安装目录到其他盘

    WSL修改默认安装目录到其他盘 1 查看WSL分发版本 2 导出分发版为tar文件到d盘 3 注销当前分发版 4 重新导入并安装WSL在d wsl ubuntu20 04 5 设置默认登陆用户为安装时用户名 6 删除tar文件 可选 7 结
  • tcp头、三次握手、四次挥手

    1 tcp头 1 源端口和目的端口 找到目标进程 实现分用 2 序号 seq tcp传送的字节流 每个都按顺序编号 首部中的seq是本报文段中首个字节的序号 3 确认号 ack 两个作用 确认收到报文段和下一次希望收到对方报文段首字节编号
  • JVM内存泄漏和内存溢出的原因

    文章目录 1 概念 2 分析内存溢出可能出现的地方 Java栈 Metaspace 堆 2 分析内存泄漏的原因 1 静态集合类 容器使用时引起的内存泄漏 2 各种连接时 未正确使用close 方法导致的内存泄漏 3 外部模块的引用 4 单例
  • unity shader中一些空间转换方法

    1 模型空间 世界空间 观察空间 裁剪空间 建模时在模型空间进行 模型自带的坐标均为模型空间下的表示 当模型被放到世界坐标系中时 表达某个模型的位置使用的是世界空间下的坐标 所以模型上对应的某一个点 必须相应的转化为世界空间下的坐标 从模型
  • Spark学习总结(一)

    RDD及其特点 1 RDD是Spark的核心数据模型 但是个抽象类 全称为Resillient Distributed Dataset 即弹性分布式数据集 2 RDD在抽象上来说是一种元素集合 包含了数据 它是被分区的 分为多个分区 每个分
  • rsync启动脚本

    rsync启动脚本 01 bin bash www ahlinux com 02 03 rsyncd This shell script takes care of starting and stopping 04 standalone r
  • 教程:在ZYBO板卡实现PL-PS交互

    目的 学会vivado PL PS协同开发流程 平台 ZYBO开发板 zynq 7010 clg400芯片 工具 Vivado 2014 4 功能 实现PL PS协同通信 PS通过AXI总线读取PL部分的GPIO状态 对应zybo的四个开关
  • 普通程序员和大神级程序员有什么区别?

    嘿 大家周一好呀 我是播妞 听说最近大家都在反思自己为什么没有涨薪 明明工作很努力 996 随时处于待命状态 怎么每次涨薪都没自己 而有些人明明什么也没干 薪资却歘歘歘的往上涨 这是道德的沦丧还是人性的扭曲 难道自己真的不够努力 程序员 如
  • cocos2dx-lua开发旅程(一)

    最近要做一个手游项目 打算用cocos2dx来做 我也是初学者 网上很多书籍和资料都是采用cocos2dx的c 版本来做开发示例的 很少关于cocos2dx和lua怎么结合在实际项目中的教程 这使得我很痛苦 所以我写下这一系列教程 希望跟我