Class 中发布的变量在数组中不可用作为方法

Published var in Class not available in array as a method

我正在创建一个 SpriteNodes 数组,每个 SpriteNodes 都有另一个绑定变量的实例,它实际上是使用 AudioKit 构建的合成器代码的实例,所以...

var ballArray: [SKShapeNode] = []
var numberOfBalls = -1

class DroneBall: SKShapeNode, ObservableObject {
  
    @Published var conductor = DynamicOscillatorConductor()
    
    override init() {
          super.init()
      }

      convenience init(width: CGFloat, point: CGPoint) {
          self.init()
          self.init(circleOfRadius: width/2)
          fillColor = .red
          strokeColor = .yellow
       }

      required init?(coder aDecoder: NSCoder) {
          fatalError("init(coder:) has not been implemented")
      }
}

我在 SpriteKit 场景中的一个函数中创建了这个 class 的每个实例,并将 ShapeNode 添加到场景中。

 func buildABall(location: CGPoint) {
        let ball = DroneBall(width: 100, point: location)
        ball.conductor.data.frequency = AUValue((location.x * 10))
        ball.conductor.data.isPlaying = true
        ball.conductor.start()
        ballArray.append(ball)
        numberOfBalls += 1
        ballArray[numberOfBalls].position = location
        addChild(ballArray[numberOfBalls])
        
        
    }

代码正确地创建了 SpriteNode,并将使用 Synth 运行 将每个 Sprite 添加到场景中。但是我无法访问数组上合成器的方法,例如

ballArray[numberOfBalls].conductor.data.frequency = 400

我收到错误:'SKShapeNode' 类型的值没有成员 'conductor'

所以如果它在被添加到数组之前存在于 SpriteNode 中,为什么它不也在数组中?我需要能够在代码的其他地方访问 'conductor' 的值,以便我可以更改其中的变量。

数组是否也必须是某种方式的可观察对象?

声明您放置在其中的对象数组,例如

var ballArray: [DroneBall] = []