我目前正在编写一个创建 iOS 等距游戏的教程。你可以在这里找到这个。
我刚开始编写 Swift 代码,因为在使用超过 3 个月的教程时出现了很多语法错误,我问自己最近 Swift 是否有一些主要更新。
到目前为止,我自己或 XCode 本身设法解决了这些小问题,但我无法帮助自己解决这个问题:
protocol TextureObject {
class var sharedInstance: TextureDroid {get}
var texturesIso:[[SKTexture]?] {get}
var textures2D:[[SKTexture]?] {get}
}
这是我要设置的协议(与教程中的完全一样),但 XCode 不允许我定义类变量。错误代码如下:
"Class properties are only allowed within classes:
use static to declare a static property"
将“类”替换为“静态”(这对我来说没有逻辑意义)和删除协议(并定义应该在不使用协议的情况下继承的类)都会导致此代码中的另一个错误:
class TextureDroid: TextureObject {
class var sharedInstance: TextureDroid {
return textureDroid
}
let texturesIso:[[SKTexture]?]
let textures2D:[[SKTexture]?]
init() {
texturesIso = [[SKTexture]?](count: 2, repeatedValue: nil)
textures2D = [[SKTexture]?](count: 2, repeatedValue: nil)
//Idle
texturesIso[Action.Idle.rawValue] = [
SKTexture(imageNamed: "iso_3d_"+textureImage(Tile.Droid, Direction.N, Action.Idle)),
SKTexture(imageNamed: "iso_3d_"+textureImage(Tile.Droid, Direction.NE, Action.Idle)),
SKTexture(imageNamed: "iso_3d_"+textureImage(Tile.Droid, Direction.E, Action.Idle)),
SKTexture(imageNamed: "iso_3d_"+textureImage(Tile.Droid, Direction.SE, Action.Idle)),
SKTexture(imageNamed: "iso_3d_"+textureImage(Tile.Droid, Direction.S, Action.Idle)),
SKTexture(imageNamed: "iso_3d_"+textureImage(Tile.Droid, Direction.SW, Action.Idle)),
SKTexture(imageNamed: "iso_3d_"+textureImage(Tile.Droid, Direction.W, Action.Idle)),
SKTexture(imageNamed: "iso_3d_"+textureImage(Tile.Droid, Direction.NW, Action.Idle)),
]
此错误出现在我要填充 texturesIso 的所有行中
Immutable value 'self.texturesIso' may not be assigned to
以下是我的问题:
如何修复第一个错误?是否有一种新方法可以在协议中定义类?
这两个错误是相关联的,还是第二个刚刚出现,因为我设法消除了第一个?
如何以正确的方式填充 SKTexture?texturesIso.append 也不起作用。
我对 Swift 更新是否正确?如果是,是否有对 Swift 的所有突然变化的概述,因为我找不到。
我真的很感谢任何人的帮助,非常感谢提前。