诡异的SpriteKit 游戏查错
在Endless Runner 游戏中,做了一些atlas后,发现有个问题,当player跳跃起来的时候,发现他没有动画了,被默认的X图片代替。
原来的图像是这样的。
在增加了一些动画后,我的效果就成这样了。
这个不知道为何?
当时碰到这个问题,我去查看了我的player.h,而且去看了的一些提供action的一些方法,结果还是不对,最后发现这个动画是在初始化的时候遍历我们的atlas来提供的,所以去查了一下,终于找到了答案。
原因:
在我们的player sprite相关的类,player.m中,在我们初始化的时候,我们调用了一一个方法来初始换我们的动画效果。代码如下
- (void) setupAnimations
{
self.runFrames = [[NSMutableArray alloc]init];
SKTextureAtlas *runAtlas = [SKTextureAtlas atlasNamed:@"run"]; for (int i = ; i < [runAtlas.textureNames count]; i++){
NSString *tempName = [NSString stringWithFormat:@"run%.3d", i];
SKTexture *tempTexture = [runAtlas textureNamed:tempName];
if (tempTexture) {
[self.runFrames addObject:tempTexture];
}
} self.jumpFrames = [[NSMutableArray alloc] init];
SKTextureAtlas *jumpAtlas = [SKTextureAtlas atlasNamed:@"jump"];
for (int i = ; i < [runAtlas.textureNames count]; i++){
NSString *tempName = [NSString stringWithFormat:@"jump%.3d", i];
SKTexture *tempTexture = [jumpAtlas textureNamed:tempName];
if (tempTexture) {
[self.jumpFrames addObject:tempTexture];
}
}
错误就是在这里,我当时是拷贝的函数过去去修改,结果漏了这一个地方,这个地方应该改成jumpAtlas,因为这个方法需要遍历我们的atlas,我们错误的让他去遍历我们的run.atlas文件夹,然后去寻找jump001, jump002等,所以他是找不到相关的文件的,所以导致了会出现默认的那个X来代替我的sprite.
总结,在我们写代码时,可能会出现各种的问题,在差错时会花费我们大量的时间。所以
1) 在拷贝相类似的代码时,需要再三确认是否需要修改。
2) 在我们的游戏出现行为不对的时候,需要先去找到初始化动画的代码,从源头查起,才不会有所疏漏。
诡异的SpriteKit 游戏查错的更多相关文章
- 记一次Lua语言中死循环查错
前言 如果在Lua语言中某一处死循环了!你特么的怎么去查出这特么的该死的循环到底在特么的哪里!!! 重现步骤 一打开技能界面,整个游戏就卡死不动了 开始排查 查看一下cpu占用率,unity占用60% ...
- 使用DBUnit框架数据库插入特殊字符失败的查错经历
本文记录的是使用DBUnit测试框架进行数据库数据插入时,插入特殊字符失败的查错经历.希望能对向我这样的小白同学们在遇到类似问题时,能够有一些启发.背景:在写跟数据库交互模块的单元测试,数据库表中的e ...
- pdo的工作方式与查错
pdo某些方法如prepare()会返回PDOStatement对象; 然后需要通过返回的PDOStatement对象的方法操作 当查错通过$pdo->errInfo()方法可能查不出错误信息 ...
- 查错 CH Round #57 - Story of the OI Class
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2357%20-%20Story%20of%20the%20OI%20Class/查错 题解:刚开始看见立马以为是 ...
- Instruments的使用 逻辑查错,内存泄漏分析等工具集
原创文章,转载请注明 XCode 开发后期,要对代码进行改进和优化,查内存泄漏是其中一项重要工作,今天下午偷了点时间,把前段时间的代码稍微整理了一下,顺带用了下这个工具,还真发现了些问题.这里记录一下 ...
- JS查错小工具-三生有幸【推荐】
H5和CSS语言在开发者官网上都有在线查错工具,同样的,更加复杂的JavaScript也需要一个查错工具,(别指望DreamWeaver了,debug功能做的太垃圾,还不如Firefox自带的强..) ...
- 笔记:php有那几种错误提示和查错方法
php有哪几种错误提示 1.notice : 注意 2.waring : 警告 3.error : 错误 PHP中都有哪几种查错方法? 1.语法检查--php配置文件里,把错误显示选项都打开或者代码开 ...
- appium 查错
很高兴最近论坛用appium的人多了不少,但也有不少由于不了解appium导致出现错误后不知道从何下手.这里根据我的个人经验给出一个简单的查错指南,不保证能解决所有错误,但至少让你知道你应该朝哪个方向 ...
- Java 游戏报错 看不懂求教
Java 飞机小游戏 报错 看不懂求救 at java.awt.Component.dispatchEvent(Unknown Source)at java.awt.EventQueue.dispat ...
随机推荐
- innodb部分参数优化
参数调优内容:1. 内存利用方面2. 日值控制方面3. 文件IO分配,空间占用方面4. 其它相关参数 1.内存利用方面:首先介绍一个Innodb最重要的参数:innodb_buffer_pool_si ...
- Retinex processing for automatic image enhancement 翻译
Retinex processing for automatic image enhancement 摘要: 最近六七年来,人们从新燃起了对Retinex computation的兴趣,特别是在它对图 ...
- jQuery 2.2 和 1.12 新版本发布
新年新气象,jQuery 团队于昨日发布了两个新版本:1.12 和 2.2.这两个版本都包含了大量的Bug修正和功能改进.基本上这会是3.0之前最后一次发布.不过由于3.0不做向下兼容,所以届时 jQ ...
- c# 基础复习1
1. 类和对象 1.1 类和对象的概念 类:对象的类型,它不同于 int 等基本数据类型,因为类具有行为:也可以说是具有相 同特征和行为的一组对象的集合. 对象:对象是一个个你能看得见,摸得着的实体, ...
- struts2中<s:select/>标签的运用详解
<s:select list="smsTypes" listKey="SmsTypeId" listValue="SmsTypeName&quo ...
- Python实现合并排序MergeSort
def merge(sort_list, start, mid, end): left_list = sort_list[start:mid] right_list = sort_list[mid:e ...
- jquery下 选择器整理
jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个 ...
- flask开发restful api系列(1)
在此之前,向大家说明的是,我们整个框架用的是flask + sqlalchemy + redis.如果没有开发过web,还是先去学习一下,这边只是介绍如果从开发web转换到开发移动端.如果flask还 ...
- python 解决递归调用栈溢出
递归函数 2578次阅读 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact ...
- Spark学习笔记--stage和task的划分
https://github.com/JerryLead/SparkInternals/blob/master/markdown/3-JobPhysicalPlan.md stage 和 task 的 ...