2015-02-23 137 views
7

我看到在XCode 6中有一个内置的编辑器。我找不到很多关于如何使用它或它如何工作的文档,但是我能够弄清楚如何使用它来制作SKSpriteNodes,然后使用childNodeWithName()将它们链接到.swift文件。当您创建一个新的SpriteKit项目时,它将以GameScene.swift和GameScene.sks开头。我可以使用这些来创建一个可视化级别,然后我可以在GameScene.swift中对其进行编码,但是当我尝试将自己的.sks和.swift文件创建为新的级别时,我无法连接.sks和我制作的.swift文件。我试图准确地遵循下面这个教程:如何将.sks文件链接到SpriteKit中的.swift文件

http://www.techotopia.com/index.php/An_iOS_8_Swift_Sprite_Kit_Level_Editor_Game_Tutorial#Creating_the_Archery_Scene

当我连接的两个文件中没有错误来了,然后当我转移到它正确移转现场,但什么,我在视觉上加入.sks显示在模拟器中。请帮忙,我花了数小时研究解决方案。我能够找到关于关卡编辑器的极少数教程和论坛只讨论了以新SpriteKit项目开始的GameScene.swift和.sks。

+0

你可以在哪里实例化新SKScene并向其转换时显示代码? – rakeshbs 2015-02-24 05:19:55

+0

[SpriteKit模板中的GameScene.swift和GameScene.sks文件之间有什么关系](http://stackoverflow.com/questions/26765573/whats-the-relationship-between-gamescene-swift-and-gamescene- sks-files-in-sprit) – rickster 2015-02-26 02:31:37

回答

5

此方法将取消存档sks文件并将其初始化为调用它的SKNode子类。这意味着您可以将文件解压缩为SKNode(因此根节点将成为SKNode)并将其作为子节点添加到场景中。您也可以将文件解压缩为GameScene或任何SKNode子类。

extension SKNode { 
    class func unarchiveFromFile(file : NSString) -> SKNode? { 
     if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") { 
      var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)! 
      var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData) 

      archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene") 
      let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as SKNode 
      archiver.finishDecoding() 
      return scene 
     } else { 
      return nil 
     } 
    } 
} 

使用方法如下:

let scene = GameScene.unarchiveFromFile("GameScene")! as GameScene 

let levelStuff = SKNode.unarchiveFromFile("Level 1")! 
self.addChild(levelStuff) 
+0

如果我的问题已经被回答,我很抱歉。我确实阅读过那个由rickter链接的论坛帖子,但这并不是我一直在寻找的。我使用了: let levelStuff = SKNode.unarchiveFromFile(“Level 1”)! self.addChild(levelStuff) 将节点从我的.sks添加到我的场景中。我现在可以使用代码控制可视化添加的节点。我打算使用它来制作静态平台,然后使用代码添加我的“英雄”。 非常感谢你帮助我,这是一个简单的解决方案,现在我可以轻松地为我制作的游戏制作和设计新的关卡。 – 2015-02-27 04:12:54

+1

此外,这是我第一次使用任何类型的论坛EVER,所以我很抱歉,如果我没有做他们应该做的事情 – 2015-02-27 04:18:00

+0

如果这个答案解决了你的问题,你会考虑接受它(点击绿色的勾号) – Okapi 2015-02-27 18:28:01

2

通过这个答案的时间(的Xcode 8.2.1)做它的 '简单' 的方法是: 在Project Navigator中选择.sks文件,以便显示图形编辑器。然后进入Utilities Area(Right Side),在“Custom Class Inspector”标签下; “自定义类”字段中,在.swift文件中键入类的名称。

+0

谢谢,但这不能为ShapeNode完成。以防万一有人想要这样做。 – user431791 2017-04-06 10:57:51

相关问题