gpt4 book ai didi

ios - 从 GameViewController 中的 NSTimer 调用 GameScene 中定义的函数

转载 作者:行者123 更新时间:2023-11-28 08:36:55 25 4
gpt4 key购买 nike

在我的 GameViewController.swift 中,我有一个名为 resumeGameScene 的函数。在该功能中,我启动了 3 个计时器。所有这些都调用我的 GameScene.swift 文件中的 3 个独立函数(lane1、lane2 和 lane3)。我试过使我的函数成为类函数,但这没有用,因为我在这些函数(lane1、lane2 和 lane3)中有更多函数和变量。

GameViewController.swift:

    func resumeGameScene() {
if (GameScene.unarchiveFromFile("GameScene") as? GameScene) != nil
{
let skView = self.view as! SKView

if skView.scene != nil
{
skView.paused = false

if resumeTime1 != nil && resumeTime2 != nil && resumeTime3 != nil
{

timer1 = NSTimer.scheduledTimerWithTimeInterval(resumeTime1!, target: self, selector: #selector(GameScene.lane1), userInfo: nil, repeats: false)

timer2 = NSTimer.scheduledTimerWithTimeInterval(resumeTime2!, target: self, selector: #selector(GameScene.lane2), userInfo: nil, repeats: false)

timer3 = NSTimer.scheduledTimerWithTimeInterval(resumeTime3!, target: self, selector: #selector(GameScene.lane3), userInfo: nil, repeats: false)



}

}
}
}

GameScene.swift:

func lane1()
{


let randomNum = arc4random_uniform(100) + 1

levels()

if randomNum < 46
{
mouseFire(1, laneFire: fire)

}
else
{
enemyFire(1, laneFire: fire)

}

}//End of lane1 func


func lane2()
{

let randomNum = arc4random_uniform(100) + 1

levels()

if randomNum < 46
{
mouseFire(3, laneFire: fire)

}
else
{
enemyFire(3, laneFire: fire)

}

}//End of Lane2 func


func lane3()
{


let randomNum = arc4random_uniform(100) + 1

levels()

if randomNum < 46
{
mouseFire(5, laneFire: fire)

}
else
{
enemyFire(5, laneFire: fire)

}

}//End of Lane3 func

最佳答案

您的目标是 self,因此将在 self 上调用选择器,即 GameViewController。由于您的选择器不在 GameViewController 中,因此这将不起作用。您需要创建 GameScene 对象并将其传递给目标。

关于ios - 从 GameViewController 中的 NSTimer 调用 GameScene 中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37451777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com