尝试为自上而下的游戏创建平铺背景图像。 SKScene 是 8000,8000,我没有创建几个非常大的 Sprite ,而是尝试平铺它以提高性能。
var coverageSize = CGSizeMake(8000,8000);
var textureSize = CGRectMake(0, 0, 100, 100);
var backgroundCGImage = [UIImage imageNamed:@"bg"].CGImage; //this line returns several errors.
UIGraphicsBeginImageContext(CGSizeMake(coverageSize.width, coverageSize.height));
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawTiledImage(context, textureSize, backgroundCGImage);
UIImage *tiledBackground = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
SKTexture *backgroundTexture = [SKTexture textureWithCGImage:tiledBackground.CGImage];
SKSpriteNode *backgroundTiles = [SKSpriteNode spriteNodeWithTexture:backgroundTexture];
backgroundTiles.yScale = -1;
backgroundTiles.position = CGPointMake(0,0);
[self addChild:backgroundTiles];
最佳答案
制作图 block 的一种方法是创建一个用于绘制图 block 的节点
您将适合屏幕的图 block 数量绘制到此特殊图 block 中
使用:
var texture = self.view!.textureFromNode(drawingTile, crop: CGRectMake(-column.width, -row.height, self.frame.width + column.width , self.frame.height + row.height));
将此节点转换为纹理 现在从绘图节点中删除所有节点
使用此纹理将新节点添加到绘图节点。
现在我们的背景就在一个节点了。
当您需要滚动时,移动绘图节点,然后绘制缺失的 1 行 1 列图 block 。仅当您需要绘图模式发生很大变化以至于屏幕上有间隙需要填充时才执行此操作。再次使用上面的代码创建新的绘图模式纹理。冲洗,重复
关于swift - 平铺背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38318281/