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开发旅程(一) 的相关文章

  • 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
  • cocos2d-x中有一个JniHelper类详细使用

    主体思路 通过JNI获取java虚拟机 再获取当前程序的JNI环境 通过JNI环境获取需要调用的java类信息 再获取需要调用的java类中的函数信息 再通过JNI环境调用 使用类信息 函数信息 调用对应的java函数 看起来好像有点复杂
  • CCMoveBy和CCMoveTo有什么区别?

    CCMoveBy和CCMoveTo有什么区别 cocos2d里面的CCMoveBy 和CCMoveTo有什么区别 含义不同的地方在那块 那位高人给解释一下 谢谢 insul 2010 09 14 18 52 by是相对于当前位置 to是到该
  • cocos2d-x学习笔记(持续更新)

    接受触屏事件的优先级是值越小 响应触屏事件的优先级越高 Z值越大 越外面 粒子系统设计工具 Particle Designer软件 目前只支持MAC平台 导出 plist文件 地图设计工具 Tiles 目前有两个版本 一个是Java版本 另
  • static函数与普通函数

    全局变量 外部变量 的说明之前再冠以static 就构成了静态的全局变量 全局变量本身就是静态存储方式 静态全局变量当然也是静态存储方式 这两者在存储方式上并无不同 这两者的区别虽在于非静态全局变量的作用域是整个源程序 当一个源程序由多个源
  • Texture::getSourceFileType()

    Texture getSourceFileType
  • cocos2d-x 卡牌翻牌效果的实现

    cocos2d x 卡牌翻牌效果的实现 2012年07月25日 综合 共 3085字 字号 小 中 大 评论关闭 猴子原创 欢迎转载 转载请注明 转载自Cocos2D开发网 Cocos2Dev com 谢谢 原文地址 http www co
  • Cocos2d-x 3.17.1 Android Studio环境搭建和创建编译项目和真机调试

    eclipse NDK参考 https www cnblogs com l d d p 6531557 html 最近项目上需要用Cocos2d x在Android智能硬件上进行开发 很早之前搭建过Cocos2d x3 15 1 Eclip
  • Cocos2dx-OpenGL ES2.0教程:编写自己的shader(2)

    在上篇文章中 我给大家介绍了如何在cocos2d x里面绘制一个三角形 当时我们使用的是cocos2d x引擎自带的shader和一些辅助函数 在本文中 我将演示一下如何编写自己的shader 同时 我们还会介绍VBO 顶点缓冲区对象 和V
  • Openframework在VS2010中的配置

    Openframework在VS2010中的配置 首先去官网下载Openframework 下载后最好解压到C盘根目录下 不然会出现各种问题 我也不知道怎么解决 随便打开其中的例程 然后右击该工程 选择属性 如下图 接着在C C 常规选项里
  • COCOS2DX学习之Box2D物理引擎-------物体和相互作用

    1 创建一个静态物体 创建一个静态物体应该很简单 在头文件生命一下要创建新物体的函数 然后在cpp文件中实现它即可 具体的时候先过程 首先要用createbody函数创建一个物体 然后定义一个b2bodydef变量 指定一下这个变量的typ
  • Android.mk - 构建目录中的所有源文件

    我正在使用 Android NDK 构建我的 cocos2dx 项目 在 Android mk 中 有一个 LOCAL SRC FILES 的定义 其中列出了每个 cpp 文件 每当我添加新的源文件时 我也需要将它添加到那里 它看起来像这样
  • 暂停时快速高斯模糊[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 In cocos2d x我需要实现快速高斯模糊 它应该是这样的 我刚刚在 App Store 上发现了一些游戏 已经统一完成了这样的模糊 所以 这很好fadeIn fadeOut当用户暂停
  • COCOS2D-X:比例精灵

    我想按原始图像的高度设置精灵的比例 然后该精灵的宽度将遵循该图像的原始比例 我怎样才能做到这一点 感谢您的所有帮助 CCSprite有一个成员函数 virtual void setScale float scale 参考 setScale
  • SSL 归档符号表错误(运行 ranlib)

    我构建了 OpenSS1 0 2g智能狐客户端 http smartfoxserver com API 1 6 3 Cocos2dx v3 Android Windows 10 64 位 它抛出错误 SSL 归档符号表错误 运行 ranli
  • Cocos 2d-x 中带有贝塞尔曲线的圆角矩形

    是否可以使用 DrawNode 对象绘制一个圆角矩形 我认为使用贝塞尔曲线是可能的 但我做了一些尝试 但我认为我无法处理它 查看 API 我只发现这两个函数 绘制四边形贝塞尔曲线 const Vec2 origin const Vec2 c
  • 设置 Cygwin + Android NDK + cocos2Dx 以与 Eclipse 配合使用

    我正在关注该网站的教程 通过游戏应用货币化 作者 Todd Perkins http www lynda com Android tutorials Understanding downloading Cocos2d x 107169 12
  • 安卓后退按钮不起作用

    我正在使用 cocos2dx 制作一个小游戏 在游戏的活动中我提供以下函数来处理后退按钮 Override public boolean onKeyDown int keyCode KeyEvent event return super o
  • 将 Spritekit 游戏转换为 Android?

    是否有任何新选项可以将 spritekit 游戏转换为 Android 游戏 似乎唯一的选择是用 Java 重新编码所有内容或使用 Cocos2D LibGDX 等 很不幸的是 不行 而且带有 Apportable 服务的跨平台 Sprit

随机推荐

  • 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怎么结合在实际项目中的教程 这使得我很痛苦 所以我写下这一系列教程 希望跟我