Sprite Kit 和 Pathfinding,iPad 和 iPhone 的区别?

Posted

技术标签:

【中文标题】Sprite Kit 和 Pathfinding,iPad 和 iPhone 的区别?【英文标题】:Sprite Kit and Pathfinding, differences between iPad and iPhone? 【发布时间】:2014-10-28 20:05:07 【问题描述】:

我想知道 iPad 和 iPhone 之间是否存在一些显着差异的设置? 我正在使用 Sprite Kit、SKD 8.1 和目标 ios 7.1 开发游戏。

游戏在测试期间使用 A* 寻路来移动我地图上的 2 个角色。 我遇到的问题是角色在寻找路径时。

在我的 iPad 4 (16gb) 上,当角色寻找路径时,寻路会冻结。 在我的 iPhone 6 和 iPhone 4 上,它可以完美运行。

它在模拟器(iPad Retina、iPhone 4 和 iPhone 6)上运行良好,并且游戏中没有卡顿,仅在我的 Ipad 4 上...

有什么我错过的吗?该游戏是为在 iPhone 和 iPad 上使用而开发的。 非常感谢任何帮助..

【问题讨论】:

Profile with Instruments 查看时间花在了哪里。这里没有任何人可以诊断您的问题的信息。 我是 xcode 的新手 :) 谢谢你的提示,我会在下班后做这个并发布更多信息 :) 【参考方案1】:
-(NSArray*)nearbyBlocks:(SKNode*)blocks 

    NSMutableArray *tmp = [NSMutableArray arrayWithCapacity:4];
    NSArray *leftB = [blocks.name componentsSeparatedByString:@"_"];

    /* LEFT */
    SKNode *b = [background childNodeWithName:[NSString stringWithFormat:@"block_%i_%i", [[leftB objectAtIndex:1] intValue]-1, [[leftB objectAtIndex:2] intValue]]];
    if ([blockArrayWalk containsObject:b]) 
        [tmp addObject:b];
    

    /* RIGHT */
    b = [background childNodeWithName:[NSString stringWithFormat:@"block_%i_%i", [[leftB objectAtIndex:1] intValue]+1, [[leftB objectAtIndex:2] intValue]]];
    if ([blockArrayWalk containsObject:b]) 
        [tmp addObject:b];
    

    /* UP */
    b = [background childNodeWithName:[NSString stringWithFormat:@"block_%i_%i", [[leftB objectAtIndex:1] intValue], [[leftB objectAtIndex:2] intValue]+1]];
    if ([blockArrayWalk containsObject:b]) 
        [tmp addObject:b];
    

    /* DOWN */
    b = [background childNodeWithName:[NSString stringWithFormat:@"block_%i_%i", [[leftB objectAtIndex:1] intValue], [[leftB objectAtIndex:2] intValue]-1]];
    if ([blockArrayWalk containsObject:b]) 
        [tmp addObject:b];
    

    return [NSArray arrayWithArray:tmp];

我现在已经运行了 Time Profiler,当角色正在寻找路径时它会出现峰值。 childNodeWithName 的搜索为黄色,占 24%... 每次路径找到下一个块时都会调用 nearBlocks,因此根据路径长度多次调用。

问题是我需要使用 SKNodes,因为如果有人正在移除下面的块,char 可能会掉下来......可能很快就会放弃游戏想法;)

【讨论】:

以上是关于Sprite Kit 和 Pathfinding,iPad 和 iPhone 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

Sprite Kit 检测接触

游戏中的三角学——Sprite Kit 和 Swift 教程

Sprite Kit 碰撞检测和物理

游戏中的三角学——Sprite Kit 和 Swift 教程

swift 2 sprite-kit 中的多行标签?

Sprite Kit 场景未呈现