所以我有点被困在某事上。 我有点想要随机掉落我杀死我的怪物。 这就是我得到的。
我有武器1
class weapon {
var str = Int
}
class Weapon1: weapon {
override init() {
super.init()
str = 10
}
class Weapon2: weapon {
override init() {
super.init()
str = 20
}
我有一个怪物
class monster {
str = 20
def = 10
drops = [weapon1(), Weapon2()]
}
如果我的怪物死了,我有一个地方可以连接我的水滴
var itemdrops = weapon()
当我的怪物死亡时,它应该将我的怪物掉落到我的项目中。 所以我可以在库存中使用它。 但是当我尝试这样做时
random = (arc4random_uniform(UInt32(monster.items.count-1)))
//-1 becous it would say 2 items and an array starts at 0
itemdrops = monster.items[random]
但是物品是白色的..
答案 0 :(得分:1)
问题是items
是monster
的实例属性:
class monster {
str = 20
def = 10
drops = [weapon1(), Weapon2()]
}
但是当您尝试访问它时,您尝试通过类访问它:
monster.items[random]
类monster
没有类/静态属性items
,因此您的代码无法编译。
这是使用大写字母表示姓名的一个很好的理由,就像你应该的那样。它可以帮助您跟踪这个东西是一个类还是一个实例。例如:
class Monster {
str = 20
def = 10
drops = [Weapon1(), Weapon2()] // assume you've named these classes correctly
}
现在,在您的代码中,您会说:
let aMonster = Monster() // an _instance_
var itemdrops = aMonster.items[random]