我有五个iPad场景,我的GVC中有5个iPhone场景我有这个,我可以调用欢迎场景和Hud场景没有问题,但我无法复制其他场景的相同调用。我不知道它是否是花括号,但我似乎无法调用默认为iPhone场景的其他iPad场景。 (相信我,当HUD出现时,我非常兴奋。)有人可以就我的代码结构给出一些建议。请....
import SpriteKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if (UIDevice.currentDevice().userInterfaceIdiom == .Phone) {
if let scene = WelcomeScene(fileNamed:"WelcomeScene") {
let skView = self.view as! SKView
skView.showsFPS = GlobalData.Constant.DEV.DEBUG
skView.showsNodeCount = GlobalData.Constant.DEV.DEBUG
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
} else {
if let scene = WelcomeScenePad(fileNamed: "WelcomeScenePad") {
let skView = self.view as! SKView
skView.showsFPS = GlobalData.Constant.DEV.DEBUG
skView.showsNodeCount = GlobalData.Constant.DEV.DEBUG
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
if let scene = HudScenePad(fileNamed: "HudScenePad") {
let skView = self.view as! SKView
skView.showsNodeCount = GlobalData.Constant.DEV.DEBUG
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
} else if let scene = WelcomeScene(fileNamed:"WelcomeScene") {
let skView = self.view as! SKView
skView.showsFPS = GlobalData.Constant.DEV.DEBUG
skView.showsNodeCount = GlobalData.Constant.DEV.DEBUG
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
}
}
override func prefersStatusBarHidden() -> Bool {
return false
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return .AllButUpsideDown
} else {
return .All
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
}
这段代码让我知道游戏场景将转到正确的sks文件,并在编辑器中打印该值,以验证,这是在我的gameOver函数中。
if (UIDevice.currentDevice().userInterfaceIdiom == .Pad ){
if let _ = SceneTypePad(rawValue: fullSKSNameToLoad + String("Pad")) {
fullSKSNameToLoad = "fileNamed" + "Pad"
goToScenePad(SceneTypePad.DebateScene1Pad)
print(("Went to DebateScenePad"))
_ = SKTransition.fadeWithDuration(3)
_ = DebateScene1Pad()
}
} else if (UIDevice.currentDevice().userInterfaceIdiom == .Phone ){
goToScene(SceneType.DebateScene1)
(print("Went to DebateScenePhone"))
_ = SKTransition.fadeWithDuration(3)
_ = DebateScene1()
}
三秒太长了不能等待...... :)
答案 0 :(得分:0)
我需要创建一个新的静态变量来调用我的GlobalData / Base Scene文件中的SKs pad场景。 Noob错了。当复制新文件的代码时,请仔细检查变量,当重复swift文件时。此外,让头脑休息是好的,个人不能保持他们的注意力跨度并且在编码14小时后变得敏锐......散步,用新鲜的头脑梳理它。截止日期在这项业务中至关重要,但有时候压力会导致可以轻松解决的愚蠢决策。
static var previousScenePad:SceneTypePad?
static var nextScenePad:SceneTypePad?
if (UIDevice.currentDevice().userInterfaceIdiom == .Phone) {
if (UIDevice.currentDevice().userInterfaceIdiom == .Pad ){
if let _ = SceneTypePad(rawValue: fullSKSNameToLoad + String("Pad")) {
fullSKSNameToLoad = "fileNamed" + "Pad"
}
} else if (UIDevice.currentDevice().userInterfaceIdiom == .Phone ){
}
在调用特定SKS文件时,是否可以在GVC中工作。显然,它基于使用在基类中定义的正确fileName“”来呈现正确的视图,是的,我知道,有更好的方法来使用一个SKS文件,并使用相机节点来调整视图。在内容方面,拥有更多空间,它可以创造出更多像素和更多空间的不同体验。资产同样重要,因为在开始时我每台设备都调用了错误的资产,我决定硬编码,我的外观尺度因素不会失去解决方案。最终结果将是一个跨平台工作的通用应用程序。如果你正确优化,我能够将140mb应用程序压缩到76mb,即使我在我的应用程序包中添加了5个新场景。检查背景音乐,检查声音效果和PNG文件。限制发射器的效果看起来不错。您可以随时返回并在下次更新中找到更清洁的方法!