我想在我的应用程序中介绍一个切换按钮,让用户启用或禁用功能点。
我所谈论的功能是:
self.sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints]
是否可以通过一种方式禁用它或它?
谢谢!
答案 0 :(得分:3)
如果功能点是您打开的唯一调试选项,则可以通过将调试选项设置为空集来轻松将其关闭(以及所有其他调试选项):
self.sceneView.debugOptions = []
如果您已设置其他调试选项并且只想删除 功能点,则您需要获取当前debugOptions
值并应用一些{ {3}}删除您不想要的选项的方法。 (然后将debugOptions
设置为修改后的集合。)
答案 1 :(得分:0)
答案是是,
即使其他
Feature Points
是debugOptions
,也可以启用 / 禁用ON
。您可以使用insert(_:)
和remove(_:)
实例方法来完成此操作。
这是一个代码(Xcode 10.2.1,Swift 5.0.1,ARKit 2.0):
let configuration = ARWorldTrackingConfiguration()
@IBOutlet weak var `switch`: UISwitch!
var debugOptions = SCNDebugOptions()
override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self
let scene = SCNScene(named: "art.scnassets/model.scn")!
debugOptions = [.showWorldOrigin]
sceneView.debugOptions = debugOptions
sceneView.scene = scene
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
sceneView.session.run(configuration)
}
@IBAction func featurePointsOnOff(_ sender: Any) {
if `switch`.isOn == true {
debugOptions.insert(.showFeaturePoints)
sceneView.debugOptions = debugOptions
print("'showFeaturePoints' option is \(debugOptions.contains(.showFeaturePoints))")
} else if `switch`.isOn == false {
debugOptions.remove(.showFeaturePoints)
sceneView.debugOptions = debugOptions
print("'showFeaturePoints' option is \(debugOptions.contains(.showFeaturePoints))")
}
}
希望这会有所帮助。