teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

10

タイトルの変更

2017/03/23 16:17

投稿

toshiFP
toshiFP

スコア22

title CHANGED
@@ -1,1 +1,1 @@
1
- [Swift3]コンソールにmemory issueエラーメッセージが出る
1
+ [Swift3/SpriteKit]コンソールにmemory issueエラーメッセージが出る
body CHANGED
File without changes

9

コードを追記しました。

2017/03/23 16:17

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -30,4 +30,74 @@
30
30
  そこまでは分かったのですがどうすれば解決できるのかが分かりません。
31
31
  コード内にremoveallchildrenを入れましたが変わらず。
32
32
  根本的に何かが間違っているのでしょうか。
33
- ご教授いただければ大変助かります。よろしくお願いいたします。
33
+ ご教授いただければ大変助かります。よろしくお願いいたします。
34
+
35
+ ```Swift
36
+ import SpriteKit
37
+ import CoreMotion
38
+
39
+ class Stage1Scene: SKScene, SKPhysicsContactDelegate {
40
+
41
+ //衝突判定用のカテゴリー設定
42
+ struct ColliderType {
43
+ static let player_cat: UInt32 = ( 1 << 0)
44
+ static let pipe_cat: UInt32 = ( 1 << 1)
45
+ static let goal_cat: UInt32 = ( 1 << 2)
46
+ }
47
+
48
+ //motionManager生成
49
+ var motionManager: CMMotionManager!
50
+
51
+ //プレイヤー変数宣言
52
+ var player = SKSpriteNode(imageNamed: "metal")
53
+ var playerXposition: Double = 0
54
+ var playerYposition: Double = 0
55
+
56
+ //カメラノード宣言
57
+ var cameraNode: SKCameraNode!
58
+
59
+ //起動時処理
60
+ override func didMove(to view: SKView) {
61
+ self.physicsWorld.gravity = CGVector.zero
62
+ self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame)
63
+ self.physicsWorld.contactDelegate = self
64
+
65
+ motionManager = CMMotionManager()
66
+ motionManager.accelerometerUpdateInterval = 0.1
67
+ motionManager.startAccelerometerUpdates(to: OperationQueue.main,withHandler: {(accelerometerData:CMAccelerometerData?, error:Error?) -> Void in
68
+
69
+
70
+ self.playerXposition = accelerometerData!.acceleration.y * 20
71
+ self.playerYposition = accelerometerData!.acceleration.x * -20
72
+ })
73
+
74
+ cameraNode = childNode(withName: "cameraNode") as? SKCameraNode
75
+ let zoomIn = SKAction.scale(to: 0.2, duration: 0)
76
+ cameraNode.run(zoomIn)
77
+ }
78
+
79
+ //タッチ開始時
80
+ override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
81
+ for touch: AnyObject in touches {
82
+ let location = touch.location(in: self)
83
+ let touchedNode = self.atPoint(location)
84
+
85
+ if (touchedNode == nextSprite) {
86
+
87
+ self.isPaused = false
88
+ label.text = ""
89
+
90
+ self.removeAllChildren()
91
+ //ステージ2へのシーンの推移
92
+ let scene = Stage2Scene(fileNamed: "Stage2Scene")
93
+ let transition = SKTransition.fade(with: UIColor.white, duration: 2.0)
94
+ scene?.scaleMode = SKSceneScaleMode.aspectFill
95
+ self.view?.presentScene(scene!, transition: transition)
96
+
97
+ //全てのスプライトを削除
98
+ self.removeAllChildren()
99
+ self.removeAllActions()
100
+
101
+ }
102
+
103
+ ```

8

追記を記入しました。原因が分かったのですが解決策が見当たりません。

2017/03/22 14:59

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -24,4 +24,10 @@
24
24
  しかしステージ1から進めていくとやはりステージ3から4の間でエラーが出ます。
25
25
  ちなみにremoveallchildrenをコード内に入れてません。
26
26
  (追記)
27
+ その後MemoryのモニタリングをしていたところSceneを描画するたびに
28
+ Memoryの数値が上がっていきステージ4を描画する頃には600MBを超えており
29
+ その拍子にアプリがクラッシュしてしまうようです。
27
- ステージ3からじめるとステージ4へは問題なく推移できました
30
+ そこまで分かったのすがどうすれば解決でるのかが分かりせん
31
+ コード内にremoveallchildrenを入れましたが変わらず。
32
+ 根本的に何かが間違っているのでしょうか。
33
+ ご教授いただければ大変助かります。よろしくお願いいたします。

7

追記を記入しました。ステージ3から始めるとステージ4へは問題なく推移できました。

2017/03/22 14:55

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,6 @@
22
22
  GameViewController.swiftの一番初めに表示するSceneを
23
23
  ステージ1からではなくステージ4からにすると問題なく表示されました。
24
24
  しかしステージ1から進めていくとやはりステージ3から4の間でエラーが出ます。
25
- ちなみにremoveallchildrenをコード内に入れてません。
25
+ ちなみにremoveallchildrenをコード内に入れてません。
26
+ (追記)
27
+ ステージ3からはじめるとステージ4へは問題なく推移できました。

6

2017/03/17 15:15

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  ###問題
11
11
  ゲームを進めていきステージ1〜3までは問題なくシーンが推移表示されるのですが
12
- ステージ3から4へシーンを推移する時だけコンソールに下記のエラーメッセージが出ます。
12
+ ステージ3から4へシーンを推移する時だけコンソールに下記のエラーメッセージが出てアプリがクラッシュしてしいます。
13
13
 
14
14
  **Message from debugger: Terminated due to memory issue**
15
15
 

5

2017/03/15 18:32

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,4 @@
22
22
  GameViewController.swiftの一番初めに表示するSceneを
23
23
  ステージ1からではなくステージ4からにすると問題なく表示されました。
24
24
  しかしステージ1から進めていくとやはりステージ3から4の間でエラーが出ます。
25
- ちなみにremoveallchildrenをコード内に入れてません。別のシーンに推移した時に推移前のシーンのノードは全て削除されないのでしょうか。
25
+ ちなみにremoveallchildrenをコード内に入れてません。

4

2017/03/15 18:31

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,4 @@
22
22
  GameViewController.swiftの一番初めに表示するSceneを
23
23
  ステージ1からではなくステージ4からにすると問題なく表示されました。
24
24
  しかしステージ1から進めていくとやはりステージ3から4の間でエラーが出ます。
25
- ちなみにremoveallchildrenをコードに入れてません。別のシーンに推移した時に推移前のシーンのノードは全て削除されないのでしょうか。
25
+ ちなみにremoveallchildrenをコードに入れてません。別のシーンに推移した時に推移前のシーンのノードは全て削除されないのでしょうか。

3

2017/03/15 18:30

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,4 @@
22
22
  GameViewController.swiftの一番初めに表示するSceneを
23
23
  ステージ1からではなくステージ4からにすると問題なく表示されました。
24
24
  しかしステージ1から進めていくとやはりステージ3から4の間でエラーが出ます。
25
- ちなみにremoveallchildrenをコードに入れてません。別のシーンに推移した時に推移前のシーンのノードは全て削除されないのでしょうか。
25
+ ちなみにremoveallchildrenをコードに入れてません。別のシーンに推移した時に推移前のシーンのノードは全て削除されないのでしょうか。

2

2017/03/15 18:29

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -22,4 +22,4 @@
22
22
  GameViewController.swiftの一番初めに表示するSceneを
23
23
  ステージ1からではなくステージ4からにすると問題なく表示されました。
24
24
  しかしステージ1から進めていくとやはりステージ3から4の間でエラーが出ます。
25
- ちなみにremoveallchildrenをコードに入れてないのですが別のシーンに推移した時に推移前のシーンのノードは全ての削除されないのでしょうか。
25
+ ちなみにremoveallchildrenをコードに入れてません。別のシーンに推移した時に推移前のシーンのノードは全ての削除されないのでしょうか。

1

2017/03/15 18:29

投稿

toshiFP
toshiFP

スコア22

title CHANGED
File without changes
body CHANGED
@@ -21,4 +21,5 @@
21
21
  ###試したこと
22
22
  GameViewController.swiftの一番初めに表示するSceneを
23
23
  ステージ1からではなくステージ4からにすると問題なく表示されました。
24
- しかしステージ1から進めていくとやはりステージ3から4の間でエラーが出ます。
24
+ しかしステージ1から進めていくとやはりステージ3から4の間でエラーが出ます。
25
+ ちなみにremoveallchildrenをコードに入れてないのですが別のシーンに推移した時に推移前のシーンのノードは全ての削除されないのでしょうか。