【问题标题】:Sprite Kit NSArray of multiple sprites?多个精灵的Sprite Kit NSArray?
【发布时间】:2014-01-19 02:32:16
【问题描述】:

我有 6 个精灵图像我正在尝试添加到我的场景中,添加它们中的每一个似乎都会减慢一切。我想我需要创建一个 NSArray 以帮助提高速度。这是我创建的数组,但它只添加了第一个图像,我怎样才能让它添加所有 6 个?提前谢谢!

我的数组

NSArray *myArray = [NSArray arrayWithObjects:@"image1",@"image2",@"image3",@"image4",@"image5",@"image6", nil];

NSInteger count = [myArray count];
for (int i = 0; i < count; i++) {
    if (i > 5) {
        break;
    }
    result = [myArray objectAtIndex:i];
}

//Setting SKSpriteNodes from array.
dice = [SKSpriteNode spriteNodeWithImageNamed:[myArray objectAtIndex:result.intValue]];

【问题讨论】:

  • 是什么让您认为 NSMutableArray 有助于提高渲染性能?
  • ..或改进创建/初始化/添加精灵和纹理加载?
  • @prototypical 那么在这种情况下有什么帮助呢?
  • 如果有人要回答这个问题,他们需要查看您的代码和/或了解更多关于您在做什么的信息。多少个节点?抽几张?您是否在模拟器或设备上遇到帧率问题?花点时间排查问题并查看本网站上与性能相关的其他一些问题。
  • 我认为 @LearnCocos2D 可能是正确的,您的问题可能与纹理加载有关,您应该花时间了解预加载纹理、字体和音频。

标签: nsmutablearray sprite-kit sprite


【解决方案1】:

在你的场景中定义一个属性:

@interface MyScene
@property (nonatomic) NSMutableArray *items;
@end

然后创建一个方法来填充该数组:

- (void)fillItems {

for (int i=0; i<10; i++) {
    SKSpriteNode *d1 = [SKSpriteNode spriteNodeWithImageNamed:@"Sprite1"];

    d1.position = CGPointMake(self.frame.size.width/4 + arc4random() % ((int)self.frame.size.width/2),
                              self.frame.size.height/2 + arc4random() % ((int)self.frame.size.height/2));

    d1.color = [self randomColor];
    d1.colorBlendFactor = 1.0;
    d1.xScale = 0.25;
    d1.yScale = 0.25;
    d1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:d1.frame.size];

    //Adding SpriteKit physicsBody for collision detection
    d1.physicsBody.categoryBitMask = diceCategory;
    d1.physicsBody.dynamic = YES;
    d1.physicsBody.contactTestBitMask = frameCategory;
    d1.physicsBody.collisionBitMask = diceCategory | frameCategory;
    d1.physicsBody.usesPreciseCollisionDetection = YES;
    d1.name = @"Sprite1";
    [self.items addObject:d1];
    [self addChild:d1];
}

【讨论】:

  • 恭喜,您找到了问题的答案
  • 谢谢,你知道为什么只出现了 1 个精灵而不是全部 6 个吗?
  • 你知道为什么只有 1 个精灵出现而不是全部 6 个吗?
  • 你能告诉我为什么它只添加第一个精灵吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 2023-04-03
相关资源
最近更新 更多