我想列出捆绑包中的.sks。它们是我比赛的水平。我只想通过丢弃其余的.sks来知道捆绑包中有多少级别我试过这个
let listSKS = Bundle.main.path(forResource:".//Stage1", ofType: "sks")
print(listSKS)
返回->("/private/var/containers/Bundle/Application/2B72AD87-E6FE-45FF-9DCC-AB0F27F2F353/Madness Jumping.app/./Stage1.sks"(
let listLevels = GameScene(fileNamed: ".//Stage1")
print(listLevels)
返回->可选(名称:"阶段1"帧:{{-896,-414},{1792,828}}锚点:{0.5,0.5}(
let listSKS2 = Bundle.main.path(forResource:".//Stage*", ofType: "sks")
print(listSKS2)
返回->无
let listLevels2 = GameScene(fileNamed: ".//Stage*")
print(listLevels2)
返回->无
您可以使用"阶段";如下所示:
let filePrefix = "Stage"
if let fileURLs = Bundle.main.urls(forResourcesWithExtension: "sks", subdirectory: nil) {
let filteredArray = fileURLs.filter{ $0.lastPathComponent.range(of: "^(filePrefix)", options: [.regularExpression, .caseInsensitive, .diacriticInsensitive]) != nil }
print("Filtered Array", filteredArray)
}
您应该使用urls(forResourcesWithExtension:)
而不是
let listSKS = Bundle.main.urls(forResourcesWithExtension: ".sks", subdirectory: nil)
只获取文件名:
if let listSKS = Bundle.main.urls(forResourcesWithExtension: ".sks", subdirectory: nil) {
let files = listSKS.map(.lastPathComponent).filter({$0.prefix(5) == "Stage"})
print(files)
}