spritekitで、画面タッチしたら次の文字列を表示する処理を作るために、setで配列を保存して、stringArrayでStringの配列をよみとり、ひとつずつ表示していくような処理をしたのですが,「スレッド1:致命的エラー:インデックスが範囲外」となってしまい、うまくできません。自分ではタッチしてcountに足していく方法しか思いつかず、どうしたらいいのかわからずつまっている状況なので、どうかお願いします。
import Foundation import SpriteKit import UIKit class River: SKScene { let window = SKSpriteNode(imageNamed: "メッセージ.png") var count = 0 var listText:[SKLabelNode] = [SKLabelNode(), SKLabelNode(), SKLabelNode()] var theList2:[String] = [] override func didMove(to view: SKView) { let back = SKSpriteNode(imageNamed: "川.png") back.size = CGSize(width: self.size.width, height: self.size.height) back.position = CGPoint(x: self.size.width/2, y: self.size.height/2) addChild(back) window.anchorPoint = CGPoint(x: 0, y: 0) window.size = CGSize(width: self.size.width , height: self.size.height / 5) addChild(window) //setの処理 let list = ["a","b","c"] UserDefaults.standard.set(list,forKey: "myList") UserDefaults.standard.synchronize() //readの処理 if let theList = UserDefaults.standard.stringArray(forKey: "myList"){ theList2 = theList } } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { print(count) print(theList2[count]) var listText2:[SKLabelNode] = [] listText2.append(listText[count]) listText2[count].text = theList2[count] //スレッド1:致命的エラー:「インデックスが範囲外」とでててしまいます。 listText2[count].position = CGPoint(x: 100, y: 0) addChild(listText2[count]) count += 1 } }
デバックエリア:
2019-01-01 06:16:45.623940 + 0900 Gametest [1913:648131] Interface Builderファイルのクラス_TtC8Gametest6SKViewが不明です。
2019-01-01 06:16:45.624681 + 0900ゲームテスト[1913:648131]メタルGPUフレームキャプチャ有効
2019-01-01 06:16:45.625283 + 0900 Gametest [1913:648131] Metal API検証が有効になりました
0
a
1
b
(lldb)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/04 01:58