SpriteBuilder复杂CCB在App场景加载时报错排查
Player.CCB由body和arm两部分组成,它们都开启物理使能.
在GameScene.ccb中新建一个物理对象,将Player.ccb拖入该对象.此时编译运行App均正常.
然后继续添加其他物理对象Wall.ccb组成屏幕边界,这时App运行发生错误,log为:
Collection <__NSArrayM: 0x78f97730> was mutated while being enumerated
发现源代码中断在场景的初始化方法中,该方法的功能是递归调用场景中每个子CCNode的didLoadFromCCB方法.
接下来删除Player对象,再添加Player对象,这时App运行又正常.多次测试发现,只有当最后一个对象是Player时程序才不出错.
但是不能到这里停止.假如游戏场景中要有2个Player对象真么办?总有一个不是最后一个对象.所以还得找原因.
因为异常发生在didLoadFromCCB的递归调用中,而Player只有arm子对象添加了该函数.遂将其注释掉,在添加多个Player的情况下App运行正常.
这时可以锁定是arm类Arm中的didLoadFromCCB方法里做了不应该的事.检查该方法,发现其间接使用了GameScene.ccb中的物理对象:
_phyWorld = (CCPhysicsNode*)self.parent.parent;
CCLOG(@"name is %@",_phyWorld.name);
//省去无关代码
for (int i = 0; i < MAX_BULLETS; i++) {
bullet = [CCBReader load:@"Sprites/Bullet"];
bullet.visible = NO;
[_phyWorld addChild:bullet];
}
注意,在GameScene.ccb子对象的枚举过程中修改了物理对象.只有Player放在物理对象的最后才不会出错.
知道了问题所在,简单的取消Arm中对物理对象的引用就可以了,将必要的逻辑放到GameScene类里去即可.
SpriteBuilder复杂CCB在App场景加载时报错排查的更多相关文章
- 关于jsp页面加载时报错500的问题
先说一下,问题的发生,个人做了个小系统,成品以后运行了几次,没有问题,结果最后一次测试时,发现登陆页面报错了: 账号密码输入正确,经过后台登陆后,按理说是应该进入登陆成功后的jsp页面,然而结果却是: ...
- [UE4]场景加载界面
就可以这样就可以了,当另外一个场景成功打开后,场景加载界面也会自动消失(因为这是加载界面是添加到当前场景). 加上delay是为了在小场景测试的时候可以方便看到加载场景,避免场景加载过快看不到,不加的 ...
- NGUI的异步场景加载进度条
1.直接创建三个场景,其中第二个场景是用来显示进度条加载的界面,进度条用UISlider,不会的看我前面的博文就可以了. 2.这里提供两种方法,建议使用第一种,加载比较平缓 方法一: using Sy ...
- Unity3D 异步加载 在 场景加载 中的使用
异步加载 我们想一想玩过的一些游戏,基本都会有加载界面——因为游戏场景数据较大,所以需要加载一小段时间.那为什么一些2D游戏也会有加载界面呢?按理说2D游戏场景会很小,这样做是为了让游戏跑在低端设备上 ...
- 喵的Unity游戏开发之路 - 多场景:场景加载
如果丢失格式.图片或视频,请查看原文:https://mp.weixin.qq.com/s/RDVMg6l41uc2IHBsscc0cQ 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始 ...
- Centos系统创建用户oracle后,用该用户登陆系统,页面加载报错GConf error
Linux 的 GConf error 解决办法 问题: Centos系统创建用户oracle后,用该用户登陆系统,页面加载报错,导致重新进入Centos系统后出现: GConf error:Fail ...
- App启动加载广告页面思路
需求 很多app(如淘宝.美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页.今天我们就来开发一个广告 ...
- App 启动加载广告页面思路
需求 很多app(如淘宝.美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页.今天我们就来开发一个广告 ...
- 关于App启动加载广告页面思路
需求 很多app(如淘宝.美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页.虽然说这个广告页面对用户 ...
随机推荐
- PHP 实例 AJAX RSS 阅读器
RSS 是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用. RSS 搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者. RSS 阅读器用于阅读 RSS Feed. AJA ...
- Visual Studio 写自己的动态链接库(DLL)
有些时候,我们想写自己的函数库以避免重复写代码,此文介绍如何使用Visual Studio编写自己的动态链接库. 0,实验环境说明: 集成开发环境:Visual Studio 10.0 操作系统: W ...
- Dynamics CRM2016 Web API之Create related entities in one operation
本篇继续来介绍两个web api的接口,一个是"Create related entities in one operation"即在一步操作中完成主实体的创建加关联实体的创建,一 ...
- Unsupported major.minor version 52.0
今天运行项目,切换一下eclipse,运行程序突然发现普通的类main()方法无法运行,报错详细信息如下: Exception in thread "main" java.lang ...
- java创建对象详解和多态问题
一. java 构造方法不等于创建对象而是初始化对象,new 关键字分配内存和创建对象的. 二.Test test = new Test(); 有人用上面的表达式来说明构造方法返回对象引用,这是明显 ...
- Microsoft Dynamics CRM 2011 当您在 大型数据集上执行 RetrieveMultiple 查询很慢的解决方法
症状 当您在 Microsoft Dynamics CRM 2011 年大型数据集上执行 RetrieveMultiple 查询时,您会比较慢. 原因 发生此问题是因为大型数据集缓存 Retrieve ...
- 16 Content Provider总结
第16天 Content Provider 一, 什么是Content Provider? 内容提供者 Android四大主件之一 :短信记录 通讯录 联系人 自定义 >Content Prov ...
- 15 ActionBar 总结
ActionBar 一, 说明 是一个动作栏 是窗口特性 提供给用户动作 导航模式 可以适配不同的屏幕 二, ActionBar 提供的功能 1. 显示菜单项 always:总是展示到ActionBa ...
- 【Unity Shaders】Unity里的雾效模拟
写在前面 熟悉Unity的都知道,Unity可以进行基本的雾效模拟.所谓雾效,就是在远离我们视角的方向上,物体看起来像被蒙上了某种颜色(通常是灰色).这种技术的实现实际上非常简单,就是根据物体距离摄像 ...
- iOS中 按钮和标题完美各种排列/完美教程 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 前言:最近常常用到按钮和相应标题的组合,当按钮设置图片加标题时,触发范围较小,不易触发,最重要的是还要调试偏移量, ...