我正在使用精灵套件开发一个简单的游戏。当我在我的设备上运行游戏时,我开始在游戏、主场景和关卡场景之间切换场景。但是,游戏内存增加但意外增加了 5 倍,并自动降低实际关卡。我只是等待游戏场景,什么都不做。正如您在图中看到的那样。
我尝试以下方法来解决问题:
- 在 GamePlay 类中调用 deinit 方法,但在发生这种意外减少时它没有调用 deinit 方法。
- 使用仪器内存分配,但无法弄清楚任何事情。
我使用 Xcode 调试会话。你有什么建议?我怎么能理解为什么内存会以这种方式增加和减少?
我正在呈现这样的场景。
let scene = GamePlay(size: self.view!.bounds.size, viewController: viewController)
self.view!.presentScene(scene)
class GamePlay: SKScene {
private weak var viewController: GameViewController?
lazy var TimeToAddLive = CFTimeInterval(600)
var gameOverCurrentTime: CFAbsoluteTime!
var totalWaitTime: CFTimeInterval!
var timePassed: Double!
var timeLeft: Int!
var ballNode: [Balls] = []
let parentLaser = SKNode()
let gameObjectsNode = SKNode()
var allBallsConnected = 0
var gunPoint: CGPoint!
var laserChilArray = [SKSpriteNode]()
var remainingLives = SKLabelNode(fontNamed: "Chalkduster")
let back = SKSpriteNode(imageNamed: "back")
var timeLabel = SKLabelNode(fontNamed: "Chalkduster")
lazy var contactSound : SKAction = SKAction.playSoundFileNamed("laserContact.caf", waitForCompletion: false)
lazy var failSound: SKAction = SKAction.playSoundFileNamed("fail2.caf", waitForCompletion: false)
lazy var succesSound: SKAction = SKAction.playSoundFileNamed("succes.caf", waitForCompletion: false)
lazy var fadeIn = SKAction.fadeInWithDuration(0.5)
lazy var fadeOut = SKAction.fadeOutWithDuration(0.5)
lazy var frameForAnimation = 0
lazy var fullScreenAdTime = 0
lazy var doubleContact = 0
let deneme = SKSpriteNode()
let tutBox = SKSpriteNode()
let Pi = CGFloat(M_PI)
var RadiansToDegrees: CGFloat {
get {
return 180 / Pi
}
}
var DegreesToRadians: CGFloat {
get {
return Pi / 180
}
}
我认为问题可能在于定义属性。我不知道。所以我写了我的类属性。当我呈现 GamePlay 场景时,会发生这种增加。呈现关卡场景或主场景或游戏结束场景时,它不会增加。