ios - 附加到 ARAnchor 的 SpriteKit SKLabelNode 不出现或全屏显示
问题描述
我在世界原点位置向我的场景视图添加一个锚点:
let configuration = ARWorldTrackingConfiguration()
sceneView.session.run(configuration)
sceneView.session.add(anchor: ARAnchor(name: "world origin", transform: matrix_identity_float4x4))
sceneView.presentScene(SKScene())
然后我选择在我的锚点位置显示一个 SKLabelNode
func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {
// Create and configure a node for the anchor added to the view's session.
let labelNode = SKLabelNode(text: "")
labelNode.horizontalAlignmentMode = .center
labelNode.verticalAlignmentMode = .center
return labelNode;
}
当我运行应用程序并移动相机时,我注意到我根本看不到节点(我只看到普通相机),或者我看到整个屏幕都是紫色的(好像标签节点字体大小很大)。
我尝试添加labelNode.fontSize = 5
,但仍然有同样的问题。
如何让节点正确显示在我的 SpriteKit 场景中?
解决方案
当我将我的代码与 Apple 的默认 SpriteKit + ARKit 示例应用程序进行比较时,主要区别在于:
sceneView.presentScene(SKScene())
在他们的示例代码中,他们使用:
// Load the SKScene from 'Scene.sks'
if let scene = SKScene(fileNamed: "Scene") {
sceneView.presentScene(scene)
}
它的大小似乎SKScene.sks
为 750 x 1334,因此相当于:
sceneView.presentScene(SKScene(size: CGSize(width: 750, height: 1334)))
当我将代码更新到最后一行时(即给 SKScene 一个大小),一切都正确显示。但是,我不认为硬编码宽度和高度是做事的正确方法。我会问一个单独的问题。
推荐阅读
- ios - Pod文件在一段时间后不断消失
- r - 使用日期范围闪亮更新绘图
- python - Webscrape 返回不可读的字符和乱码
- javascript - 即使使用了 Promise,异步函数也不会等待
- tableau-api - Tableau,如果列> 0,那么当列为负时,1 显示 1?
- java - REST 开发后端 DTO 与前端 DTO
- firebase - 如何使用三元运算符显示 Firestore 中的任何数据
- xamarin.forms - 从在线 XML 文件或 xamarin 表单中的 URL 获取图像
- shiny - R Shiny renderTable 中是否有关于不常见参数的文档?
- jquery - TypeError: el.visible is not a function - 检查元素是否在滚动后可见