xXxxX Asked:2020-09-22 11:30:52 +0000 UTC2020-09-22 11:30:52 +0000 UTC 2020-09-22 11:30:52 +0000 UTC 用纹理填充 SKShapeNode 772 是否可以用 1 比 1 比例的纹理填充 SKShapeNode 并重复直到填充整个 SKShapeNode?我尝试使用fillTexture,但它只是拉伸纹理,但它需要精确重复,创建一个没有缩放的无缝纹理。 ios 1 个回答 Voted Best Answer Max Mikheyenko 2020-09-22T11:57:49Z2020-09-22T11:57:49Z 在 obzhS 上(记住这是 上的一个类别SKShapeNode) - (void)setTiledFillTextureWithImageName:(NSString*)imageName tileSize:(CGSize)tileSize { CGFloat targetDimension = fmax(self.frame.size.width, self.frame.size.height); CGSize targetSize = CGSizeMake(targetDimension, targetDimension); UIImage *targetRef = [UIImage imageNamed:imageName]; UIGraphicsBeginImageContext(targetSize); CGContextRef contextRef = UIGraphicsGetCurrentContext(); CGContextDrawTiledImage(contextRef, CGRectMake(0, 0, tileSize.width, tileSize.height), targetRef.CGImage); UIImage *tiledTexture = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.fillTexture = [SKTexture textureWithImage:tiledTexture]; } 并迅速 extension SKShapeNode { func setTiledFillTexture(imageName: String, tileSize: CGSize) { let targetDimension = max(self.frame.size.width, self.frame.size.height) let targetSize = CGSizeMake(targetDimension, targetDimension) let targetRef = UIImage(named: imageName).CGImage UIGraphicsBeginImageContext(targetSize) let contextRef = UIGraphicsGetCurrentContext() CGContextDrawTiledImage(contextRef, CGRect(origin: CGPointZero, size: tileSize), targetRef) let tiledTexture = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() self.fillTexture = SKTexture(image: tiledTexture) } }
在 obzhS 上(记住这是 上的一个类别
SKShapeNode)并迅速