gpt4 book ai didi

xcode - 不在函数错误时的实例帧类型

转载 作者:行者123 更新时间:2023-11-28 06:47:12 25 4
gpt4 key购买 nike

我正在制作一个游戏,其中对象在 map 上的某个位置生成,我有多个针对不同对象的函数并且需要一个引用,所以我将我的代码放在函数之外以扩大其范围但现在我得到一个错误就是说

Instance type 'frame' cannot be used on type 'Levelunit'

如果我把它放回函数中,它完全没问题,但是当我把它放在函数外面时,它似乎有问题。这是我的代码:

let yAxisSpawnLocations: [CGFloat] = [0]
let xAxisSpawnLocations: [CGFloat] = {

var spawnLocations:[CGFloat] = [] //Create 5 possible spawn locations
let numberOfNodes = 5

for i in 0...numberOfNodes - 1 {

var xPosition = (frame.maxX) / CGFloat((numberOfNodes - 1)) * CGFloat(i)

xPosition += thePlayer.size.width/2

xPosition -= frame.maxX/1.6
spawnLocations.append( xPosition )

}

return spawnLocations

}()

我查了一下,不太明白给出的答案。有人可以告诉我我做错了什么吗?

顺便说一句,LevelUnit 是我类(class)的名称。

最佳答案

您正在尝试在 Levelunit 完全初始化之前使用 self。例如,这是您隐式使用 self 的地方:

var xPosition = (frame.maxX) / CGFloat((numberOfNodes - 1)) * CGFloat(i)

它是一样的:

var xPosition = (self.frame.maxX) / CGFloat((numberOfNodes - 1)) * CGFloat(i)

因此,您可以做的是在 Levelunit 初始化程序中初始化此属性(如果您不想与自动初始化程序继承规则共舞,我会跳过),或者初始化它在 didMoveToView 中,它会正常工作。如果我没记错的话,Levelunit 可能是 SKScene 的子类,对吧?如果是这样,就这样做:

//Define a property of Levelunit like this

var xAxisSpawnLocations:[CGFloat] = []

然后在 didMoveToView 中初始化它:

let numberOfNodes = 5

for i in 0...numberOfNodes - 1 {

var xPosition = (self.frame.maxX) / CGFloat((numberOfNodes - 1)) * CGFloat(i)

xPosition += thePlayer.size.width/2
xPosition -= frame.maxX/1.6
xAxisSpawnLocations.append( xPosition )

}

关于xcode - 不在函数错误时的实例帧类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35977001/

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