【问题标题】:Value of Optional Type 'SKSpriteNode?' not Unwrapped; Did you mean to use ! or?可选类型 'SKSpriteNode?' 的值未拆封;你的意思是用!或者?
【发布时间】:2015-11-03 16:44:24
【问题描述】:

所以我正在尝试创建一个 2D SpriteNode,它是固定的(它是一个徽标),并且没有做任何特别的事情来搞砸它。这是我的代码:

let Logo = SKSpriteNode(fileNamed: "logo.png");
Logo.yScale = 1;
Logo.xScale = 1;
Logo.position = CGPoint(x:CGRectGetMidX(self.frame),y:CGRectGetMidY(self.frame));
self.addChild(Logo)

当我运行应用程序时,它崩溃并给我这个错误: 可选类型 'SKSpriteNode?' 的值未拆封;你的意思是用!还是?

它告诉我添加“!” to logo(logo!),我试过了,还是不行。

感谢您的帮助!

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    SKSpriteNode(fileNamed: "logo.png") 调用返回可选的(如果你在文件名中出现拼写错误,它会给你 nil)。

    如果您确定该文件存在,您可以使用!:

    let Logo = SKSpriteNode(imageNamed: "logo.png")!
    

    但更安全的方法是这样做:

    if let Logo = SKSpriteNode(imageNamed: "logo.png") {
        Logo.yScale = 1
        ...
    }
    

    【讨论】:

    • if let Logo = SKSpriteNode(fileNamed: "logo.png") { Logo.yScale = 1 ... } 有效,但图像不显示。我检查并确保我的资产文件中有图像并且它在那里,我将名称更改为 logo.png 并且仍然不起作用。我什至将图像移动到不同的目录。任何想法如何解决?
    • 修复它,将 SKSpriteNode(fileNamed:...) 更改为 SKSpriteNode(imageNamed:...)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2015-11-11
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多