我正在创建一个游戏,我为主菜单屏幕创建了一个UI,我想应用播放按钮显示在下图所示的播放按钮上。我知道如何通过main.storyboard来完成它,但不知道如何在spritekit中。因此,当他们点击播放按钮时,它将转到另一个场景,即(GameScene)
这是图像。
答案 0 :(得分:2)
你可以通过两种方式来解决这个问题。要么坚持SpriteKit
并自己处理互动,要么将SpriteKit
与UIKit
混合。在第一种情况下,您可以继承SKSpriteNode
或创建一个SKNode
子类与SKSpriteNode
子项
SKSpriteNode(imageNamed: "...")
通过覆盖touchesBegan
或touchesEnded
函数来处理用户互动。或者您使用代码创建的UIButton
。
<强>更新强>
决定快速通用实现SpriteKit
按钮。您可以尝试here,但请记住,这是一个快速的第一次提交:)
答案 1 :(得分:1)
我的场景中没有包含按钮的单个图像。没有像这样的可扩展性空间。我将这些按钮创建为SKSpriteNode的子类,并将它们作为对象添加到场景中。这样,如果您在按钮周围移动,则无需重做背景图像。 @ Konrad.bajtyngier在他的实现方面走在正确的道路上,我在所有游戏中使用了非常相似的东西(它成为从游戏复制到游戏的不可或缺的对象)。他的实现使用闭包() - &gt; ()执行操作,您可以在子类中使用另一个选项。
你的子类中的添加一个委托
protocol ButtonDelegate: NSObjectProtocol {
func buttonWasPressed(sender: Key)
}
weak var buttonDelegate: ButtonDelegate!
当你创建按钮时,只需将它们添加为按钮的代表。
button.buttonDelegate = self
然后在场景中添加buttonWasPressed func。通过这种方式,您将知道按下了什么按钮并相应地处理它,而不必担心使用闭包来保留对象。
我觉得一种方法比另一种方法更好,但你应该强烈考虑对按钮进行子类化,并从背景图像中删除按钮背景。
请在此处查看我的答案和代码以获取详细信息