gpt4 book ai didi

swift3 - 覆盖 Swift 和 SpriteKit 中类的开放变量以在 XCode 的 ActionEditor 中使用

转载 作者:行者123 更新时间:2023-12-01 22:37:35 25 4
gpt4 key购买 nike

我正在尝试制作小型平台游戏,只是为了学习目的。我尝试使用 SKTextures 数组为角色设置动画,如下所示:

let animation: SKAction = SKAction.animate(
with: frames.map {
let texture : SKTexture = SKTexture(imageNamed: $0)
texture.filteringMode = SKTextureFilteringMode.nearest

return texture
},
timePerFrame: 0.15
)

frames 变量是 SKTextures 数组。我使用 map 为每个纹理设置过滤模式。这工作得很好,但我发现我可以在 XCode 的 ActionEditor 中使用 AnimateWithTextures Action 创建动画( Action )。这就是我的问题。这效率更高,但我无法在 ActionEditor 中更改动画中纹理的过滤模式。我研究了 SKTexture 类并看到了这个:

open class SKTexture : NSObject, NSCopying, NSCoding {
...
/**
The filtering mode the texture should use when not drawn at native size. Defaults to SKTextureFilteringLinear.
*/
open var filteringMode: SKTextureFilteringMode
...
}

如果我没记错的话open意味着我可以覆盖变量,但我不知道如何覆盖。我想将所有 SKTextures 的 filteringMode 默认值设置为 SKTextureFilteringMode.nearest,这样 ActionEditor 将使用纹理过滤设置为最近邻的纹理。

此外,如果您知道如何在特定操作中设置纹理的过滤模式 - 我也想知道如何做到这一点。谢谢

最佳答案

您可以创建一个函数来为您设置动画,并使用您的自定义 init 创建 SKTexture 的扩展,当您准备好时,只需将其调用到您的节点即可。

extension SKTexture { // Declare this extension outside your class decleration
convenience init(customImageNamed: String) {
self.init(imageNamed: customImageNamed)
self.filteringMode = .nearest
}
}

func setupAnimationWithPrefix(_ prefix: String, start: Int, end: Int, timePerFrame: TimeInterval) -> SKAction{
var textures = [SKTexture]()
for i in start...end{
textures.append(SKTexture(customImageNamed: "\(prefix)\(i)"))
}
return SKAction.animate(with: textures, timePerFrame: timePerFrame)
}

如果您有 10 个名为 image1、image2、image3 等的图像...那么这就是您使用此函数的方式

func runAction(){
let action = setupAnimationWithPrefix("image", start: 1, end: 10, timePerFrame: 0.1)
yourNode.run(action)
} // you can change timePerFrame to your liking i find 0.1 sec per frame the best

关于swift3 - 覆盖 Swift 和 SpriteKit 中类的开放变量以在 XCode 的 ActionEditor 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44358151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com