Я написал простой класс Bag. Сумка заполнена фиксированным соотношением переходов температуры. Это позволяет вам захватывать один случайным образом и автоматически заполнять себя при пустом. Это выглядит так:
class Bag {
var items = Temperature[]()
init () {
refill()
}
func grab()-> Temperature {
if items.isEmpty {
refill()
}
var i = Int(arc4random()) % items.count
return items.removeAtIndex(i)
}
func refill() {
items.append(.Normal)
items.append(.Hot)
items.append(.Hot)
items.append(.Cold)
items.append(.Cold)
}
}
Переменная температуры выглядит следующим образом:
enum Temperature: Int {
case Normal, Hot, Cold
}
My GameScene:SKScene
имеет свойство константного экземпляра bag:Bag
. (Я тоже пытался с переменной.) Когда мне нужна новая температура, я вызываю bag.grab()
, один раз в didMoveToView
и, когда это необходимо, в touchesEnded
.
Случайно этот вызов вылетает на строку if items.isEmpty
в bag.grab()
. Ошибка EXC_BAD_INSTRUCTION
. При проверке отладки отображаются элементы size=1
и [0] = (AppName.Temperature) <invalid> (0x10)
.
Изменить Похоже, я не понимаю информацию отладчика. Даже допустимые массивы показывают size=1
и несвязанные значения для [0] =
. Так что никакой помощи нет.
Я не могу заставить его разбиться на игровой площадке. Это, наверное, что-то очевидное, но я в тупике.