本文目录一览:
- 1、Cocos Creator 最简易例子,场景切换,节点挂载脚本
- 2、cocos脚本出错
- 3、一个操作让游戏内存立减50+%-CocosCreator性能优化之压缩纹理
- 4、如何在cocos3d-js游戏中实现文件读写
- 5、如何使用Code IDE调试Cocos2d-JS开发的游戏
- 6、cocos-js 写完怎么打包成win32
Cocos Creator 最简易例子,场景切换,节点挂载脚本
节点怎么挂载脚本?
点选 层级管理器 中的任意 节点,查看 右侧 属性检查器,拉到最下面,可以看到 添加组件 按钮,点击,选择 用户脚本组件,可以看到 当前所有的js脚本文件,选择 想要 挂载 的脚本,完成 节点和脚本的 挂载。
资源管理器 中任何地方,鼠标右键,新建--JavaScript。留意js文件放在统一的目录下面,比如Script[目录需要自行建立]
层级管理器 中任何地方,鼠标右键,创建节点
SceneMain.js
Scene1.js
2.5.1 CanvasScene1节点【见文中20220317160146_1.png截图】 首先挂载脚本Scene1.js
双击资源管理器中的 场景 Scene1【路径Scene--Scene1】,层级管理器中,找到 CanvasScene1节点,点击,查看右侧 属性检查器,拉到最下面,点击 添加组件 -- 用户脚本组件 -- Scene1。完成挂载。
2.5.2 BtnGoToNextScene节点【按钮类型】【见文中20220317160146_1.png截图】 设置点击响应函数
层级管理器中,找到 BtnGoToNextScene节点,点击,查看右侧 属性检查器,拉到最下面,
Click Events 中的值修改为1,表示有一个点击事件响应。
最初第一个显示框空着时,提示为 cc.Node ,表示,这个地方需要拖拽一个 节点类型。节点类型,在 层级管理器中,只有 CanvasScene1节点 挂载了脚本,而且挂载的脚本中,有我们需要的响应函数 onBtnGoToNextScene()。
这个时候,只能使用拖拽形式,把 层级管理器中的 CanvasScene1节点 拖拽到 这个 显示框区域。完成之后,这个显示框中,显示的就是 CanvasScene1。
这一步做好之后,水平并列在后面的两个下拉框就有选择项了。一个选择脚本,一个选择响应函数。
--the end
cocos脚本出错
电脑重装了系统,然后装上vs2010,准备安装cocos2d-x 2.0时,运行批处理提示如下错误:输入错误: 没有文件扩展“.js”的脚本引擎。
在装vs2010之前,电脑还安装了UE、notpad++等文本编辑工具,从而是js文件默认打开方式发生了变化,处理方法:
打开注册表编辑器,定位[HKEY_CLASSES_ROOT\.js]这一项,双击默认值将其改为“JSFile”。
重新运行批处理,一切OK。
一个操作让游戏内存立减50+%-CocosCreator性能优化之压缩纹理
在游戏中,纹理不仅占据大量的包体,也占据了大量的内存。传统的图片压缩格式(如JPEG、PNG等)虽能减少资源大小,但是不能被GPU直接识别,还是需要先加载到内存通过CPU解码,转换成RGB/RGBA等能被GPU识别的格式,才能传送到GPU进行渲染。
为避免这些问题,压缩纹理,指的是一种针对GPU的纹理压缩方案,使纹理能够直接被GPU识别并进行渲染,它具有以下优点。
传统的图片压缩主要目的是 存储 和 传输 ,为了尽可能的高效压缩,使用了可变的压缩比率,因此在解压时需要解压更多的像素位才能读取某个像素的位置,不适合随机和快速读取,也发挥不了GPU的并行处理优势。
而压缩纹理使用一个固定的压缩比率,将纹理划分成多个像素块,每个像素块包含 2*2 或 4*4 个像素,然后对每个像素块进行压缩,被压缩的像素信息存储在一个像素集合中,每个像素块的索引位置存储在一个块索引图中。读取时,首先将纹理坐标转化为块索引值,然后在像素集合中查找对应的像素块,最后在这个像素块中找到纹理颜色值。
因为采用了固定的压缩比率,GPU内部可以并行处理,从而快速的解压缩。与之相对的是,纹理的压缩过程发生在程序运行之前,并不在意编码速度,因此在压缩时会遍历所有可能性,找到和原始像素差值最小的编码,这也是纹理压缩耗时较久的原因。
顺便说一下,普通图片格式中,PNG是无损压缩,JPEG是有损压缩。而压缩纹理都是有损压缩,只是在绝大部分情况下,手机上看不出来而已。
手机上使用压缩纹理依赖于OpenGL ES的支持,OpenGL ES 2.0本身并没有定义任何纹理压缩格式,它仅提供 glCompressTexImage2D() 方法供应用程序上传压缩纹理,压缩纹理的格式由各个GPU厂商定义和实现。
OpenGL ES 3.0提供了压缩纹理标准,使各个平台都可以使用同一种压缩纹理,但市面上的设备还需要很长时间才会全部过渡到OpenGL ES 3.0。因此,仍然需要对不同的平台和设备使用不同的压缩纹理格式。
手机游戏中常用的有以下格式。
ETC1把 4*4 的像素块压缩成固定的64位编码(8个字节), 4*4 像素块是16个像素,每个像素4字节,一共占64个字节,所以压缩比是 64/8=8。但是ETC1只能存储RGB信息,不适用带透明度的纹理,为解决这个问题,Creator在ETC1文件中额外写入了透明度信息,即ETC1+A格式,它的压缩比是 64/16=4。
ETC1/ETC1+A需要OpenGL ES 2.0(对应WebGL 1.0)环境,目前几乎所有Android手机都支持ETC1,但是iOS不支持。
ETC1/ETC1+A纹理的长宽可以不相等,但要求是2的幂次方。
ETC2是ETC1的扩展,压缩比率一样,但压缩质量更高,而且支持透明通道,能完整存储RGBA信息。
ETC2需要OpenGL ES 3.0(对应WebGL 2.0)环境,目前还有不少低端Android手机不兼容,iOS方面从 iPhone5S 开始都支持OpenGL ES 3.0。
ETC2和ETC1一样,长宽可以不相等,但要求是2的幂次方。
Creator中常用的是PVRTC4+A,压缩比和ETC一样,iOS全系列支持,但是Android不支持。另外PVR要求纹理长宽相等(正方形)且是2的幂次方,例如 1280*720 的PNG图片,转换后变成 2048*2048 ,这一点会大大增加内存消耗。在实测中还发现转换后的图片质量不如ETC1,存在模糊、毛边现象,对画面要求高的游戏不适合。
压缩纹理的使用非常简单,根据构建平台添加需要的格式即可,具体参见Creator官方文档,本文不再重复了。
Creator编辑器还提供了转换压缩纹理的选项,根据转换速度分为Fast、Slow等好几档,速度越慢则画面质量越好。但不管选哪个,只影响显示效果和转换时长,显存占用都是一样的。一般情况下,显存占用就是压缩纹理的文件大小,例如文件大小是1.5M,则它占用的显存也是1.5M。
在设置压缩纹理格式时,目前Creator 2.x版本还需手动一个一个设置。如果想一次性设置所有或部分资源,自己写个脚本遍历修改对应的 .meta 文件也比较方便,这里是一个我写好的脚本 一键自动化设置压缩纹理格式
在实际项目中的测试结果是,单图、自动图集、TexturePack合图加起来超过两千张图片的Creator工程,使用PNG时打出来的apk包大小近500M,内存占用1.3G。采用压缩纹理后,包体大小降到150M,内存占用降到600M。
如何在cocos3d-js游戏中实现文件读写
因为文件系统就涉及操作系统和环境了。 不像通常的js脚本只涉及浏览器。 在win下,纯jscript脚本可以用FSO进行文件读写, 比如,在一个test.js文件中写上 var fso = new ActiveXObject("Scripting.FileSystemObject"); var f = fso.OpenTextFile。
如何使用Code IDE调试Cocos2d-JS开发的游戏
运行、测试游戏
1. 新建一个名为 CocosJSGame 的 Cocos JavaScript 工程
2. 点击工具栏上的 debug 按钮
3. 默认情况下脚本会运行在我们提供的 mac 版本预编译 runtime 上。为了简单起见,我们不对默认值进行任何改动。如果你想要在其他我们支持的目标平台上调试程序,可参考下文的“在其它目标平台上调试”
如何调试
断点支持
可以在 javascript 脚本文件中增加断点
当断点被触发时选择 “Yes” 打开 Debug Perspective 透视图,可以看到很多与调试相关的视图,调用栈、变量和断点等等。
支持 Step over, Step into, Step out 等调试方式。
代码热更新
想更改右下角的 close 按钮的位置?closeItem.attr 方法是控制该按钮的显示位置的。
closeItem.attr({
x: size.width - 20,
y: 20,
anchorX: 0.5,
anchorY: 0.5
});
修改“x”上面的值,把"size.width-20" 改成 ""size.width/2" 然后保持修改, 你会发现,在没有重启的情况下 close 按钮的位置已经改变了,在屏幕底部的中间!
在其他目标平台上调试
通过工具栏上的打开 Debug Configurations 打开 Debug Configurations 页面
在页面的左侧,选择之前我们为你创建的名为CocosJSGame的configuration
在 iOS Simulator 上调试
选择iOS Simulator单选项
选择正确的runtime app
点击 Debug 按钮,预编译的 runtime 会被自动安装到模拟器中
在iOS设备上调试
首先,你需要一个 runtime IPA, 从 1.0.0-rc1 版本开始,你可以通过 Code IDE 自己编译一个,然后安装IPA到设备中
在 iOS 设备上启动 runtime
在 "Debug Configuration" 界面选择 Remote Debug 单选项
platform 选择 "iOS"
将设备的 ip 地址填写在 Device IP 上
最后点击Debug按钮
在 Android 设备上使用 ADB 模式调试
在 "Debug Configuration" 界面选择 Android ADB Mode 单选项
选择正确的 runtime apk
点击Debug按钮
IDE 会自动安装配置中的 runtime apk 到你的连接设备上并启动runtime开始调试
在 Android 设备上使用网络模式调试
手动安装 runtime 到你的设备上,它被存放在 CocosLuaGame/runtime/android 目录中
手动启动 runtime,停留在 waiting 页面
在 "Debug Configuration" 界面选择 Remote Debug 单选项
platform 选择 "Android"
将设备的 ip 地址填写在 Device IP 上
点击Debug按钮
如何调试C++
从 1.0.0-rc1 版本开始,支持使用 XCode/Visual Studio 调试 C++ 代码的同时使用 Cocos Code IDE 调试 C++ 代码。
以调试 Mac 为例:
如果你还没有 C++ 代码,那么需要先添加(右击工程,Cocos Tools-Add Native Codes Support...)
使用 Xcode 打开 frameworks/runtime-src/proj.ios_mac 工程,并启动调试
回到 Cocos Code IDE,打开 "Debug Configuration" 页面,选择 Remote Debug 单选项
platfrom 选择 “Mac”
Target IP 填写 "127.0.0.1"
点击Debug按钮..
cocos-js 写完怎么打包成win32
不知道你的应用场景是什么,如果是浏览器打开,那么是不分系统的。如果要嵌入到安卓或苹果手机里面,只需要接入对应的平台ndk就可以了。cocos js sdk for IOS cocos js sdk for
android cocos js sdk for
win32