- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一款横版卷轴游戏,我目前正在将我的节点从 sks 链接到这样的类。但是,我确信必须有一种更清洁更有效的方法来执行此操作,因为我可以看到这个列表随着添加的节点越来越多而变得越来越庞大。将节点与类链接起来的更有效方法是什么?在此先感谢您的帮助!
if (self.childNode(withName: "TheCamera") != nil){
theCamera = self.childNode(withName: "TheCamera") as! SKCameraNode
self.camera = theCamera
}
if (self.childNode(withName: "button") != nil){
button = self.childNode(withName: "button") as! SKSpriteNode
}
if (self.childNode(withName: "shootButton") != nil){
shootButton = self.childNode(withName: "shootButton") as! SKSpriteNode
}
if (self.childNode(withName: "leftButton") != nil){
leftButton = self.childNode(withName: "leftButton") as! SKSpriteNode
}
if (self.childNode(withName: "rightButton") != nil){
rightButton = self.childNode(withName: "rightButton") as! SKSpriteNode
}
if (self.childNode(withName: "Key") != nil) {
theKey = self.childNode(withName: "Key") as! Key
theKey.setUpKey()
}
if (self.childNode(withName: "lifeBar") != nil) {
theLifeBar = self.childNode(withName: "lifeBar") as! LifeBar
theLifeBar.setUp()
}
if (self.childNode(withName: "health")) != nil {
theHealthPack = self.childNode(withName: "health") as! HealthPack
theHealthPack.setUp()
}
if (self.childNode(withName: "Weapon") != nil) {
theWeapon = self.childNode(withName: "Weapon") as! Weapon
theWeapon.setUpWeapon()
}
if (self.childNode(withName: "Weapon2") != nil) {
theWeapon = self.childNode(withName: "Weapon2") as! Weapon
theWeapon.setUpWeapon()
}
if (self.childNode(withName: "knife_count") != nil) {
knife_count = self.childNode(withName: "knife_count") as! SKLabelNode
}
最佳答案
如果所有这些属性都是您游戏的基本部分,并且您确实需要将它们定义为属性,那么您可以跳过对 Nil
的检查,因为如果它们不在您的 . sks 文件,然后出现问题,因此您可能希望游戏崩溃。
您通常不需要按钮的属性,因为您可以在 touchesBegan()
中检查“按下”哪个按钮,如下所示:
let touchLocation = touches.first!.location(in: self)
if let touchedNode = self.nodes(at: touchLocation).first as SKSpriteNode
{
if let nodeName = touchedNode.name {
switch nodeName {
case "shootButton":
firePlayerMissile()
case "leftButton":
ship.moveLeft()
case "rightButton":
ship.moveRight()
case "pauseButton":
pauseGame()
default :
break
}
}
这应该使您的代码简化如下:
self.camera = self.childNode(withName: "TheCamera") as! SKCameraNode
theKey = self.childNode(withName: "Key") as! Key
theKey.setUpKey()
theLifeBar = self.childNode(withName: "lifeBar") as! LifeBar
theLifeBar.setUp()
theHealthPack = self.childNode(withName: "health") as! HealthPack
theHealthPack.setUp()
theWeapon = self.childNode(withName: "Weapon") as! Weapon
theWeapon.setUpWeapon()
theWeapon = self.childNode(withName: "Weapon2") as! Weapon
theWeapon.setUpWeapon()
knife_count = self.childNode(withName: "knife_count") as! SKLabelNode
看起来还不错。
关于ios - 如何有效地将 SKS 的子节点与场景中的代码链接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44799349/
我正在 Xcode 上创建一个 iOS Swift 游戏。该游戏是关于一个球,并在我的关卡的 SKS 文件中制作了一个带有纹理动画的移动(左和右)障碍物。在 SKS 文件中,当我单击场景编辑器正下方的
我正在尝试制作一个简单的 2D 平台游戏。我决定使用 SpriteKit 引擎提供的 Sprite ,而不是导入 Sprite :在 GameScene.sks 中,我拖放了一个 Sprite (简单
我们可以更改 GameScene(SKScene) 上 Scene.sks 文件的 Created 关卡吗? 如果你不明白我的意思,这里更详细: 我创建了 2 个 .sks 文件(例如 one.sks
由于我使用了很多节点,所以我一直在使用 GameScene.sks。节点已经放置,但现在我想用代码显示它们。为此,我使用以下代码: if let view = self.view as! SKView
我正在创建 SKSpriteNode 的子类,例如Player 并在我的 *.sks 文件中用自定义类 Player 标记一个 SKSpriteNode。在 *.swift 中,我使用以下方法加载节点
我有一个游戏,其中有两个场景:FarmScene 和 WoodScene。每个场景都有一个 .SKS 文件和一个 .swift 文件 - 一个用于设计,一个用于编码。我已经成功地从 FarmScene
我正在学习 Swift,并从 SpriteKit 开始。我正在尝试创建一个简单的游戏,并且有一个关于 SpriteKit 如何工作的问题。我创建了一个带有开始按钮的新场景 (MenuScene),我编
为了让我的游戏弹出窗口,我在 SKS 文件中手动创建了一堆标签节点: : 我不得不制作很多标签,因为它们没有多行属性。这是我实际运行代码时的样子。 我该怎么做才能解决这个问题,是否有简单的解决方法?
我在 didMoveToView() 中有以下代码,它依赖于 .sks 文件才能正常工作: if let camera : SKCameraNode = self.childNodeWithName(
我是 Swift 和 SpriteKit 的初学者。我有 gameViewController 代码: if let scene = IntroScene(fileNamed:"IntroScene"
我正在开发一款横版卷轴游戏,我目前正在将我的节点从 sks 链接到这样的类。但是,我确信必须有一种更清洁更有效的方法来执行此操作,因为我可以看到这个列表随着添加的节点越来越多而变得越来越庞大。将节点与
我有一颗星星的 .png 图片。我想用这张图片制作充满星星的动画字母。这就是我想做的(但是星星会在其中有点动画,我想这可以用粒子效果来完成): 我可以通过为每个字母使用可能的多个 sks 文件然后将它
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
我一直在使用 SpriteKit 使用 Xcode 6 GM 制作游戏,出于某种原因,我的一些 .SKS 粒子文件现在使 Xcode 崩溃,这使得它们无法打开。我还注意到,当使用 NSKeyedUna
我不小心将 Xcode 场景文件编辑器中的一个空节点移动到了我拥有世界节点的 0,0 坐标。 取消选择后,我意识到错误。 现在我无法重新选择它。它是世界节点的子节点,我只能选择世界节点。 Push t
到目前为止,我有一款游戏,一切似乎都运行良好。我只使用作为默认项目的基本 gamescreen.swift 以及它的 .sks 文件。在满足一定条件后(对手以一定的分数获胜),它会转换到 .sks 文
我正在查看 apple 的冒险项目,以了解他们如何在游戏中创造世界和其他事物。 查看 AdventureWorld.sks 文件,我看到它们有一堆不同的“墙”节点,这些节点位于背景图像中墙所在的顶部。
我在 Internet 上看到过这个概念,但找不到具体的操作方法。 我想在 .sks 文件中布置我的整个关卡,但在任何给定时刻只加载播放器/框架 View 中的内容。在我的游戏中,我有永远上下 flo
我正在使用 SpriteKit .sks 文件 我可以将 .sks 中的 Sprite 制作成 SKSpriteNode 子类的实例吗? 这是我的子类中的 init 方法: init(imag
我正在使用 spritekit 和 swift 制作游戏。我在 gamescene.sks 中添加了一堆石头用作障碍物,并希望石头在接触时消失。 gamescene sks 中的 body 类型定义太
我是一名优秀的程序员,十分优秀!