gpt4 book ai didi

ios - 允许用户在 if 语句中选择 Player Skin Found nil

转载 作者:行者123 更新时间:2023-11-28 12:45:18 24 4
gpt4 key购买 nike

我试图让玩家从 UIViewController 选择皮肤,而不是在调用 sprite 时加载他们选择的皮肤。

ball.swift

    var skin : Skins!


init(ballName name : String?, ballColor color : UIColor, ballMass mass : CGFloat, ballPosition pos : CGPoint) {
if skin.dogSkin == true{
super.init(texture: SKTexture(imageNamed: "doge"), color: color, size: CGSize(width: radius * 2, height: radius * 2))

print("was called here too")
}
else{
super.init(texture: SKTexture(imageNamed: "circle"), color: color, size: CGSize(width: radius * 2, height: radius * 2))
}

Skins.swift

var dogSkin = false
@IBAction func backbutton(sender: AnyObject) {

}

@IBAction func dogPressed(sender: AnyObject) {


dogSkin = true
print("I hit it")

现在出现 fatal error :在展开可选值时意外发现 nil,当 if 语句被触发时,不能对其使用保护语句。

改为

var skin = Skins()

有效——不会崩溃。但这不会创建一个新的 Skins 实例吗?再次使 BOOL 为假?

虽然在控制台中得到这个?皮肤不会改变。

<xxxx.Skins: 0x7fa59d825b30>
<xxxx.Skins: 0x7fa59d828500>
<xxxx.Skins: 0x7fa59d82a7a0>
<xxxx.Skins: 0x7fa59d82c970>
<xxxx.Skins: 0x7fa59d82e960>
<xxxx.Skinss: 0x7fa59d90d7b0>
<xxxx.Skins: 0x7fa59d90ffb0>
<xxxx.Skins: 0x7fa59d912000>
<xxxx.Skins: 0x7fa59d914060>

...

最佳答案

您使变量 skin 成为隐式展开的可选变量。这意味着无论何时您引用它,它都会假定该变量包含有效值,如果不包含则崩溃。

在尝试引用皮肤之前没有给皮肤赋值,所以会崩溃。

在你使用 Swift 编程的前 2 个月,忘记你曾经知道的 force-unwrap 运算符 !。对于新手,它是崩溃运算符。

关于ios - 允许用户在 if 语句中选择 Player Skin Found nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38276847/

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