带有overlayskscene Xcode Swift 的屏幕触摸Scenekit 导致应用程序崩溃

2023-12-27

嘿,好吧,在 Overlayskene 的场景套件 3D 游戏中识别 HUD 触摸的最佳方法是什么。因为我有一个名为“AButton”的按钮,但是当我触摸按钮或屏幕时,游戏会在几个小时的搜索后崩溃,我猜问题是场景套件上的 touchbegin 不太配合。但是我该如何做到这一点,以便当用户触摸 HUD 上的按钮时,它不会使系统崩溃并且它实际上可以工作。你能看看我的代码并重写它吗?我是使用触摸开始还是使用命中测试或其他东西(我以前从未使用过命中测试)?

handleTap:]: 无法识别的选择器发送到实例 0x14d547710' *** 首先抛出调用堆栈: (0x1868042d8 0x1980300e4

Code:

 import iAd
 import UIKit
 import GameKit
 import SceneKit
 import StoreKit
 import SpriteKit
 import QuartzCore
 import Foundation
 import AVFoundation
 import AudioToolbox

  //============================================================
 class GameViewController: UIViewController, ADBannerViewDelegate, SKPhysicsContactDelegate, SKSceneDelegate, SCNSceneRendererDelegate, SCNPhysicsContactDelegate{


   let FieldScene = SCNScene(named: "art.scnassets/TesingCampusField.dae")!

let GuyScene = SCNScene(named: "art.scnassets/Guy.dae")!
//-------------------HUD-SetUp-------------------------------------------------------
let overlayScene = SKScene(size: CGSizeMake(100, 100))
override func viewDidLoad() {
    super.viewDidLoad()

    let scnView = self.view as! SCNView
    scnView.overlaySKScene = overlayScene
    scnView.backgroundColor = UIColor.whiteColor()
    scnView.scene = FieldScene
    scnView.delegate = self
    scnView.overlaySKScene!.delegate = self
    scnView.overlaySKScene!.anchorPoint = CGPointMake(0, 0)
    scnView.overlaySKScene!.physicsWorld.contactDelegate = self
    scnView.overlaySKScene!.physicsWorld.gravity = CGVectorMake(0.0, 0.0)
    scnView.allowsCameraControl = false
    scnView.showsStatistics = false

    let Guy1: SCNNode = GuyScene.rootNode.childNodeWithName("Bob_014", recursively: true)!
    FieldScene.rootNode.addChildNode(Guy1)

    ButtonA.size = CGSize(width: 6, height: 9)
    ButtonA.anchorPoint = CGPointMake(-13.3, -0.5)
    ButtonA.zPosition = 0
    overlayScene.addChild(ButtonA)

    let tapGesture = UITapGestureRecognizer(target: self, action: "handleTap:")
    scnView.addGestureRecognizer(tapGesture)
    //--------------------------
    let cameraNode = SCNNode()
    cameraNode.camera = SCNCamera()
    FieldScene.rootNode.addChildNode(cameraNode)
    cameraNode.position = SCNVector3(x: 0, y: 5, z: 15)
    //-----------------------------------------------
    let lightNode = SCNNode()
    lightNode.light = SCNLight()
    lightNode.light!.type = SCNLightTypeOmni
    lightNode.position = SCNVector3(x: 0, y: 10, z: 10)
    FieldScene.rootNode.addChildNode(lightNode)
    //-----------------------------------------------
    let ambientLightNode = SCNNode()
    ambientLightNode.light = SCNLight()
    ambientLightNode.light!.type = SCNLightTypeAmbient
    ambientLightNode.light!.color = UIColor.darkGrayColor()
    FieldScene.rootNode.addChildNode(ambientLightNode)
    //----------------------------------------------
}
    func AButtonPressed() {
    let AButtonPressed = SKTexture(imageNamed: "GreenAButtonPressed")
    let OrignalButtonA = SKTexture(imageNamed:"GreenAButton")
    let AButtonPressedAnimation = SKAction.animateWithTextures([AButtonPressed, OrignalButtonA], timePerFrame: 0.2)
    let RunAButtonPressedAnimation = SKAction.repeatAction(AButtonPressedAnimation, count: 1)
    ButtonA.runAction(RunAButtonPressedAnimation)
    print("finishedpressing")
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    /* Called when a touch begins */

    for touch: AnyObject in touches {
        let location1 = touch.locationInNode(self.overlayScene)
        if self.overlayScene.nodeAtPoint(location1) == self.ButtonA {
            AButtonPressed()
            print("AButtonPressed")
        }
    }

您的手势识别器配置为调用handleTap:用户点击视图时的方法,但您没有定义该方法。

func handleTap(gestureRecognizer: UITapGestureRecognizer) {
    // do something
}

如果你想使用touchesBegan直接,那么你不需要手势识别器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有overlayskscene Xcode Swift 的屏幕触摸Scenekit 导致应用程序崩溃 的相关文章

  • 分发内部业务 IOS 应用程序

    我遇到了 IOS 应用程序分发的一个令人困惑的部分 因此 我需要简单细分一下我的限制 即仅将我的应用程序分发给我的员工 同事或任何被视为 内部 的人 这是表明我不希望该应用程序出现在应用程序商店中的另一种方式 我的情况是我为几家公司开发 他
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们
  • Xcode 存档上传失败并出现错误

    我正在尝试从 xCode 将新版本上传到 iTunesConnect 但每次我都会遇到此问题 问题是什么 我该如何解决这个问题 最近 我开始在上传过程中遇到问题 Xcode 经常卡住 最终会因您看到的第二个错误而失败 受够了一段时间后 我转
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • 检索 iPhone 中的 Outlook 联系人

    我想通过应用程序导入所有 Outlook 联系人 有什么办法可以做到这一点吗 请告诉我 您可以通过实施 Microsoft Exchange 服务器协议来实现此目的 微软MSDN http msdn microsoft com en us
  • 相当于 Interface Builder 中 UIButton 的动态类型“自动调整字体”设置?

    UILabel 有一个Dynamic Type Automatically Adjusts FontInterface Builder 属性检查器中的复选框 Interface Builder 中是否有等效项用于自动调整 UIButton
  • iOS:Swift - 如何在触摸时向地图添加精确定位并获取该位置的详细地址?

    我想在 iOS 地图的触摸上添加注释并获取各个位置的详细地址 地标 我如何在 Swift 中实现这一目标 提前致谢 要对地图上的触摸做出反应 您需要为地图视图设置点击识别器 in viewDidLoad let gestureRecogni
  • 奇怪的 UITableView 插入/删除行动画

    在带有动画 UITableView RowAnimationTop 的 UITableView 中插入 删除 UITableViewCell 时 我看到了奇怪的效果 当要插入的单元格比上面的单元格大得多时 就会发生动画故障 显示模拟器中的故
  • 如何使用MKMapView完成加载委托,可能的“完成显示”委托?

    当用户在选择注释后点击 保存 时 我尝试保存地图视图的缩略图 当用户尚未放大该注释时会出现问题 因此尚未加载关闭缩放级别 这就是用户点击保存后我正在做的事情 将布尔值 saving 设置为 true 居中并放大注释 无动画 当调用mapVi
  • 两者都实现了类。将使用两者之一

    我有一个项目 它具有使用 SocketRocket 的依赖项 通过 CocoaPods 安装 并从 HeapAnalytics 导入了静态库 显然 HeapAnalytics 库已经使用了 SocketRocket 编译时没有出现错误 但在
  • 如何在 ios 7 上更改重新排序控制图像

    我正在寻找一种更改重新排序控件图像和大小的方法 我使用此代码来更改重新排序图像 void tableView UITableView tableView willDisplayCell UITableViewCell cell forRow
  • 如何自动缩放mapView以显示叠加层

    我可以在 mapView 上绘制多边形 但是我需要找到多边形并手动缩放它 有没有办法自动执行此过程 例如调整中心多边形 我浏览过互联网并阅读了一些相关文章 其中大多数都是基于折线和点的 任何形式的帮助将不胜感激 因为我正在寻找解决方案一段时
  • 多次添加同一个子视图来查看

    我不知道这是否可行 但我想做的是将子视图多次添加到视图中 我尝试过这样的事情 self view addSubview newView newView center CGPointMake 160 100 self view addSubv
  • 如何防止 RealmSwift 列表中出现重复项?

    如何防止向列表中添加重复项RealmSwift 我有我的User作为领域对象 但真正的数据源是服务器 只是使用领域在本地缓存用户 当我从服务器获取当前用户数据时 我想确保存储在领域中的用户拥有来自服务器的所有播放列表 以及它们的曲目列表等
  • “同时创建 xib 文件”按钮已禁用

    我在创建时遇到这个问题UIView s子类 创建 例如 UIViewControllers or UITableViewCells没关系 为什么会出现这种情况 I create view using cmd N and Xcode Vers
  • 在 iOS 11 中创建 Gif 图像颜色贴图

    最近 我在创建 Gif 时遇到了一个问题 如果它太大 颜色就会丢失 然而 感谢 SO 的帮助 有人能够帮助我找到解决方法并创建我自己的颜色图 上一个问题在这里 保存动画 Gif 时 iOS 颜色不正确 https stackoverflow
  • 将带有地理位置数据的照片保存到照片库 Swift 3

    如何使用地理位置元数据将照片保存到照片库 我已请求 并允许 应用程序访问用户位置 private func allowAccessToUserLocation locationManager CLLocationManager locati
  • 从 Xcode 中的存储库中删除未引用的图像

    我从资源文件夹中删除了 default png 因为我想要为加载屏幕使用不同的图像 但我只是删除了引用 这显然是一件愚蠢的事情 我将新图像拖到资源中并尝试将名称更改为 Default png 但它不允许我这样做 我认为这是因为第一个 Def
  • 用 UIView 像翻书一样翻页?

    我正在尝试在之间切换UIViews让它看起来就像你正在翻书的一页 The UIViewAnimationTransitionCurlUp如果我能让它向左或向右卷曲 那就非常接近了 这可能吗 我尝试过使用CATRansition但没有一种动画

随机推荐

  • 跨页面发布。在 Asp.net 中使用上一页是一个好习惯吗?

    我在 MSDN 上发现这篇文章谈论跨页面发帖 http msdn microsoft com en us library ms178139 aspx 我从未使用过 Page PreviousPage 但我认为这很有趣 你用它吗 这是一个好的
  • 在 monodroid 或 monotouch 中,我应该使用什么来代替 app.config 作为配置字符串?

    我想在 monodroid 项目中存储开发与生产连接字符串和配置字符串 我通常会将其作为应用程序设置存储在 web config 或 app config 中 但是在 monodroid 和 monotouch 项目中应该如何执行呢 我还希
  • 在从 Enum 填充的 ListPicker 中使用本地化字符串

    我正在填充一个ListPicker从一个Enum 例如 如果我有以下枚举 public enum Pets Dog Cat Platypus 我通过以下方式填充 ListPicker PetListPicker ItemsSource En
  • Ruby 元编程:无法将方法发送到模块

    例如 我有以下自定义类和模块 module SimpleModule def hello world puts i am a SimpleModule method end def self class hello world puts i
  • 导航栏显示在底部

    正如您从我添加的图片中看到的 我的导航栏显示在屏幕底部的表格视图下 我刚刚将导航栏拖放到该视图控制器上 这意味着我没有使用导航控制器 我不明白为什么会发生这种情况 我确信这是一个我所缺少的简单修复 图 2 是故事板视图 图 3 应用程序运行
  • Google Play 警告 Google Play 应用内结算实施不正确

    我刚刚收到来自 Google Play 的以下电子邮件 您好 Google Play 开发者 我们检测到您在此电子邮件末尾列出的应用程序是 不设置目标套餐调用应用内付费服务 为了意图 这可以使恶意包绕过 Play 商店计费系统并访问尚未购买
  • 给定一个未知长度的列表,通过仅扫描 1 次来返回其中的随机项

    给定一个未知长度的列表 通过仅扫描 1 次来返回其中的随机项 我的想法 类似的算法是储层采样 由其他人发布 但是 它太复杂了 因为它需要运行 rand 并在每次迭代中保留 k 个节点 有更好的解决方案吗 O n 时间和 O 1 空间 你为什
  • 使用Apple新的AudioEngine改变AudioPlayer声音的Pitch

    我目前正在尝试让 Apple 的新音频引擎与我当前的音频设置配合使用 具体来说 我正在尝试使用音频引擎改变音调 这显然是可能的这个帖子 https stackoverflow com questions 25333140 swift usi
  • glsl 和不同值的透视校正

    光栅化器是否使用透视校正对每个变化的顶点值 或在较新版本的 glsl 值中 走出 顶点着色器 进行插值 这取决于硬件吗 当发生裁剪时 裁剪顶点的值是如何计算的 我尝试撤消透视校正 并注意到被剪切的多边形的奇怪行为 我想更好地了解幕后发生的事
  • DataGridView - 使用DataPropertyName显示子元素属性

    让我们想象一下我有以下课程 public class Master public string MasterName Something public List
  • Flutter:我们如何将 Firebase 数据库与桌面应用程序一起使用

    我正在考虑使用 dart 和 flutter 开发一个桌面应用程序 但我不知道如何将 Firebase 数据库与其集成 任何建议将不胜感激 提前致谢 Use Firedart用于将 FIRebase 集成到基于桌面的 Flutter 应用程
  • python 中捕获性能异常

    我知道 python 中的异常处理速度很快try但就捕获量而言 可能会很昂贵 这是否意味着 try some code except MyException pass 比这个更快吗 try some code except MyExcept
  • numpy timedelta64 不显示分数

    我想将 847 小时转换为天 实际结果是 847 24 35 29 但是 numpy 仅显示 35 天 import numpy as np x np timedelta64 847 h x np timedelta64 x D print
  • PySpark 1.5 如何将时间戳从秒截断为最近的分钟

    我正在使用 PySpark 我在数据帧 canon evt 中有一个列 dt 这是一个时间戳 我正在尝试从日期时间值中删除秒 它最初是作为字符串从镶木地板中读入的 然后我尝试通过将其转换为时间戳 canon evt canon evt wi
  • WorkManager 尝试在 Application#onCreate 中将独特的定期工作排入队列时崩溃 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将 WorkManager 与 Dagger 2 一起使用 将依赖项注入到工作人员中 我跟着本文 https proandro
  • 从 JList 取回数据

    我在谷歌上搜索一个从 JList 组件检索数据的解决方案 但没有找到任何解决方案 那么 Jlist 是否有一种返回其项目的方法 我不想要只选择一个 我想要整个清单 原因是我有这个方法可以根据列表框的选定值更新对话框的所有组件 我想用相同的方
  • 为什么我的 vba 代码将逗号视为新行?

    我有这段从文本文件中读取的代码 当行以 Q 开头时 它是一个问题 R 和 W 分别是读取到形状的错误和正确答案 但问题是 如果文本中的任何位置有逗号 我的 powerpoint 宏会将其视为新行 请帮忙解决这个问题吗 这是代码 Open A
  • UIViewController 生命周期调用与状态恢复相结合

    我正在尝试在使用 iOS 6 和故事板的应用程序中实现状态恢复 但我在寻找防止重复调用繁重方法的方法时遇到问题 如果我只是启动应用程序 那么我需要在中设置用户界面viewDidLoad void viewDidLoad super view
  • 如何制作自定义形状的按钮?

    我正在开发一个 iPhone 应用程序 它要求按钮的形状不是矩形 正方形 例如阿米巴形状的按钮 此外 当单击该按钮时 该按钮仅突出显示其大小 所以仅仅设置背景图片是不够的 我该怎么办 一种方法是为正常状态和选定状态制作预渲染图像 然后设置使
  • 带有overlayskscene Xcode Swift 的屏幕触摸Scenekit 导致应用程序崩溃

    嘿 好吧 在 Overlayskene 的场景套件 3D 游戏中识别 HUD 触摸的最佳方法是什么 因为我有一个名为 AButton 的按钮 但是当我触摸按钮或屏幕时 游戏会在几个小时的搜索后崩溃 我猜问题是场景套件上的 touchbegi