gpt4 book ai didi

ios - SKTextureAtlas - 传递到图集的路径而不是寻找特定的图集

转载 作者:行者123 更新时间:2023-11-28 14:04:14 26 4
gpt4 key购买 nike

我正在研究处理角色动画的类(class)。动画将具有用户在创建角色时选择的不同肤色。每个肤色的图集具有相同的名称,但存储在不同名称的文件夹中,如下所示:

image 1

Image 2

这是在 xcassets 文件夹中

这应该让我的代码更加模块化,这样我就不必对大量内容进行硬编码。我希望我的代码找到选定的肤色文件夹及其子目录,以便在调用动画函数时播放正确的动画。

目前的代码:

class Character : SKNode {
let character: SKSpriteNode
let base: String
var textureArray = [SKTexture]()

init(Base: String) {
character = SKSpriteNode(texture: nil, size: CGSize(width: 30, height: 44))
base = Base
super.init()

self.addChild(character)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

func northAnimation() {
let textureAtlas = SKTextureAtlas(named: "\(base)")
var frames:[SKTexture] = []

for index in 1 ... 6 {
let textureName = textureAtlas.textureNamed("back_\(index)")
let texture = textureName
textureArray = frames

character.removeAllActions()
character.run(SKAction.repeatForever(SKAction.animate(with: textureArray, timePerFrame: 0.2)))
}
}
}

在类的init 中,目标是插入文件夹的名称(将根据角色创 build 置),然后访问相应的图集。我无法弄清楚如何找到 map 集位置的正确路径。

如何将路径传递给 map 集而不是寻找特定的 map 集?

最佳答案

出于速度原因,.XCAssets 中的所有 Assets 都在 NSSet 模式下进行管理。换句话说,文件中没有路径概念,每个名称都假定是唯一的。

所以你只需要为图集分配一个唯一的名字,比如:

“male_pale_back”“male_pale_backLeft”“male_pale_backRight”

“male_tan_back”“male_tan_backLeft”“male_tan_backRight”

如果任何文件名不唯一,则结果未定义。可能您无法获得 map 集。

所以这里 let textureAtlas = SKTextureAtlas(named: "\(base)") 如果基本名称只是 back。返回不止一个,图集加载失败。

首先更改atlas中的文件名。然后构成一个新的文件名:SKTextureAtlas(named: "male_\(name)_\(base)") 将解决您的问题。

希望你明白了。

如果您更喜欢使用 filePath,可以使用第二种方法而不是使用 .XCASSets。

引用SKTextureAtlas.init(dictionary properties: [String : Any])

关于ios - SKTextureAtlas - 传递到图集的路径而不是寻找特定的图集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53187032/

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