現在、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
ここに私の質問があります:
最初のエラーを修正するにはどうすればよいですか? プロトコル内でクラスを定義する新しい方法はありますか?
これらの 2 つのエラーは接続されていますか、それとも最初のエラーを排除できたために 2 番目のエラーが発生しただけですか?
SKTexture を正しい方法で埋めるにはどうすればよいですか? texturesIso.append も機能しません。
私は Swift Update で正しいですか? はいの場合、Swift へのすべての突然の変更の概要はありますか?
誰の助けにも本当に感謝します、前もって感謝します。