Ios 使用Spritekit批渲染精灵
我正在学习ios游戏编程,我需要创建自己的tile背景——我们正在从java迁移一款无限地图风格的游戏 我有以下代码在循环中呈现背景平铺图形:Ios 使用Spritekit批渲染精灵,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我正在学习ios游戏编程,我需要创建自己的tile背景——我们正在从java迁移一款无限地图风格的游戏 我有以下代码在循环中呈现背景平铺图形: SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"shallow_1.png"]; sprite.position = CGPointMake(x,y); [self addChild:sprite]; 不过,我正在尝试了解如何在spritekit中正确地批渲染。在java/
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"shallow_1.png"];
sprite.position = CGPointMake(x,y);
[self addChild:sprite];
不过,我正在尝试了解如何在spritekit中正确地批渲染。在java/opengl中,我们将应用纹理,添加所有渲染位置,然后一次渲染所有内容-节省性能
如何使用spritekit正确批量渲染这些瓷砖?我找不到任何信息。如果您打算使用tilemaps,最好的选择是KoboldKit 它是SpriteKit的游戏引擎,并添加到框架中
中包括对时间贴图的支持。加载纹理一次:
SKTexture *texture = [SKTexture textureWithImageNamed:@"shallow_1.png"];
然后,使所有SKSpriteNode对象都引用该纹理:
// inside loop
SKSpriteNode *node = [SKSpriteNode spriteNodeWithTexture:texture];
可以使用SKTextureAtlas预加载纹理,使用zPosition一次绘制层。这应该有帮助。批处理是自动的-如果连续的子精灵使用相同的纹理和混合模式,它们将被批处理绘制。启用调试标签以查看draw callsOk,这样调用SKSpriteNode*sprite=[SKSpriteNode spritenodewhichimagenamed:@shallow_1.png]就没有什么害处了;循环的每一次迭代?似乎没有必要,在另一种语言中,我们会加载它一次,然后进行克隆。在opengl中,我们只应用一次纹理,然后只传递一个顶点列表。似乎有。渲染约170个节点的这些瓷砖的完整背景会将FPS降低到40。这看起来很有用,它说它支持没有大小限制的tilemap,但tilemap通常指固定大小或无限水平。它是否支持在各个方向上生成噪音、分块拼接?噪音生成是您需要自己在代码中完成的事情。只要你能生成一些平铺贴图组件可以理解的东西,你就应该很好。你想要一个无限的平铺贴图。。。这可能很棘手。你最好单独问一个关于实现这一目标的最佳策略的问题,例如,在单独的相邻平铺地图上移动角色。