【问题标题】:Render text with SKRenderer使用 SKRenderer 渲染文本
【发布时间】:2020-04-07 13:43:23
【问题描述】:

我在我的项目中初始化了 SKRenderer,以便将它与金属一起使用。虽然我不确定我是否正确,但我需要知道如何使用它渲染简单的 2D 文本?

例如,下面是我们如何使用SKLabelNode 绘制文本,SKRenderer 有类似的东西吗? 非常感谢

let winner = SKLabelNode(fontNamed: "Chalkduster")
winner.text = "You Win!"
winner.fontSize = 65
winner.fontColor = SKColor.red
winner.position = CGPoint(x: 100, y: 100)
view.addChild(winner)

【问题讨论】:

  • 请提供您的金属渲染类。
  • @0xBFE1A8 谢谢,我在第一篇文章中添加了。除了这个文件,我还有另一个用于 MetalView 的文件和另一个用金属渲染特定数据的文件
  • 您在课堂上的哪个位置初始化SKLabelNode?
  • @0xBFE1A8 我并没有真正初始化 SKLabelNode,因为我正在寻找 SKRenderer 方法,但是您在第一篇文章中看到了示例,我对其进行了更新

标签: swift sprite-kit metal


【解决方案1】:

您需要做的第一件事是初始化场景。

var renderer: SKRenderer
var skScene: SKScene

在你的初始化函数中:

renderer = SKRenderer(device: device)
// iphone 11 portrait
skScene = SKScene(size: CGSize(width: 1125, height: 2436))
renderer.scene = skScene

let winner = SKLabelNode(fontNamed: "Chalkduster")
winner.text = "You Win!"
winner.fontSize = 65
winner.fontColor = SKColor.red
winner.position = CGPoint(x: 1125 / 2, y: 2436 / 2)
skScene.addChild(winner)

最后在你的渲染函数中:

renderer.render(withViewport: viewport, renderCommandEncoder: renderEncoder, renderPassDescriptor: renderPassDescriptor, commandQueue: commandQueue)
renderEncoder.endEncoding()

但请记住 ui 层 (SKRenderer) 应在最后一遍渲染。

【讨论】:

  • 亲爱的@0xBFE1A8,我非常感谢您的帮助。对此,我真的非常感激。你刚刚救了我。保持安全
  • 只是一个问题@0xBFE1A8,是否可以绘制多个SKLabelNode?因为现在我在图表的峰值上添加了一个标签,它工作正常,但是当屏幕中有多个峰值时,它总是在最新的一个上显示标签
  • 您好,您能否将此作为一个新问题提出来,请详细解释一下。
  • 谢谢@0xBFE1A8 我创建了一个新问题:stackoverflow.com/questions/61139117/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 2011-11-09
  • 2010-10-09
  • 2015-05-06
相关资源
最近更新 更多