繁体   English   中英

Swift 数组:致命错误索引超出范围

[英]Swift array: fatal error index out of range

我试图让动画在 Swift 中工作,但我收到一个错误消息:

致命错误 索引超出范围

这是我正在使用的代码:

import SpriteKit
import GameplayKit

class GameScene: SKScene {

    var Player = SKSpriteNode()
    var TextureAtlas = SKTextureAtlas()
    var TextureArray = [SKTexture]()

    override func didMove( to view: SKView) {

        TextureAtlas = SKTextureAtlas(named: "images")

        for i in 1...TextureAtlas.textureNames.count{

            var Name = "front_\(i).png"
            TextureArray.append(SKTexture(imageNamed: Name))
        }

        Player = SKSpriteNode(imageNamed: TextureAtlas.textureNames[0] as! String)

        Player.size = CGSize(width: 100, height: 150)
        Player.position = CGPoint(x: self.size.width, y: self.size.height)
        self.addChild(Player)

        backgroundColor = (UIColor.cyan())
    }

    func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        Player.run(SKAction.repeatForever(SKAction.animate(with: TextureArray, timePerFrame: 1.5)))
    }

    override func update(_ currentTime: CFTimeInterval) {

    }
}

当您调用Player = SKSpriteNode(imageNamed: TextureAtlas.textureNames[0] as! String)时, TextureAtlas.textureNames为空。 当您尝试从空数组中提取某些内容时会发生崩溃。 如果这是永远不应该为空的东西,那么您需要弄清楚为什么它是空的并修复它。 否则,您可以默认为内联空白字符串:

Player = SKSpriteNode(imageNamed: TextureAtlas.textureNames[0] as? String ?? "")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM