当前位置: 首页 > 面试题库 >

SpriteKit Swift节点计数问题

伊裕
2023-03-14
问题内容

模拟器显示节点数,即有2个节点。但是为什么呢?由于只有一个var(ball)。有没有一种方法可以创建一个圆而不使它成为两个节点。

class GameScene: SKScene {

var ball = SKShapeNode(circleOfRadius: 50)

override func didMoveToView(view: SKView) {

    ball.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)
    ball.fillColor = SKColor.blackColor()
    self.addChild(ball)
}

问题答案:

这是因为fillColor设置了SKShapeNode
。显然,设置fillColor或时strokeColor,它们每个都需要附加的节点和附加的绘制过程。默认情况下,已经设置了strokeColor(一个节点,一个绘制过程),并且由于fillColor另外设置了,因此要渲染形状需要两个节点(和两个绘制过程)。

SKShapeNode由于明显的原因,在很多情况下,它并不是一种高效的解决方案。一个SKShapeNode需要至少一个抽奖。有此主题相关的一些有趣的帖子,例如这一个或这一个。

但是,SKShapeNode即使不是唯一的解决方案,也应避免使用IMO
。仅出于性能原因。在您的情况下,例如,如果您想拥有许多不同种类的球,那么高性能的解决方案将是使用纹理图集并SKSpriteNode表示这些纹理。这样,您可以在单次绘制过程中根据需要渲染尽可能多的球。

请注意,在性能方面,绘制过程比节点数更为重要。如果场景渲染所需的绘制通过量很少,则SpriteKit可以以60fps的速度渲染数百个节点。



 类似资料:
  • 计算节点 需要额外启用 l3_agent(dvr 模式),以及 metadata agent。 其实,跟传统情况下的网络节点十分类似。每个东西向路由器有自己的命名空间,负责跨子网的转发。另外,多一个 floating 路由器,专门负责经由 floating 地址的南北向转发。 东西流量 如上图所示,租户两个子网,红色和绿色,分别有 vm1 和 vm2,位于节点 cn1 和 cn2 上。 vm1 访

  • 计算节点 主要包括两个网桥:集成网桥 br-int 和 隧道网桥 br-tun。 $ sudo ovs-vsctl show225f3eb5-6059-4063-99c3-8666915c9c55 Bridge br-int fail_mode: secure Port br-int Interface br-int

  • 计算节点 查看网桥信息,主要包括两个网桥:br-int和br-eth1: [root@Compute ~]# ovs-vsctl showf758a8b8-2fd0-4a47-ab2d-c49d48304f82 Bridge "br-eth1" Port "phy-br-eth1" Interface "phy-br-eth1" Port "

  • 计算节点 以抽象系统架构的图表为例,Compute 节点上包括两台虚拟机 VM1 和 VM2,分别经过一个网桥(如 qbr-XXX)连接到 br-int 网桥上。br-int 网桥再经过 br-tun 网桥(物理网络是 GRE 实现)连接到物理主机外部网络。 对于物理网络通过 vlan 来隔离的情况,则一般会存在一个 br-eth 网桥,替代 br-tun 网桥。 qbr 在 VM1 中,虚拟机的

  • 问题陈述 我无法理解我的代码出了什么问题,也很难理解下面的约束。 我的伪代码: 遍历树级别顺序并构造数组表示(输入实际上作为单个根给出,但它们使用数组表示来显示完整的树) 循环访问此数组表示形式,跳过空节点 对于每个节点,让我们称之为X,向上迭代,直到我们到达根检查,看看是否在路径中的任何一点,

  • xslt文件读取每个学生的循环并将其打印在一个表中,但我很难计算每个学生的课程数量,但当您这样做时,它会做的全部 它列出每个学生的课程共21门。我想让它尝试一下,只是让这个学生有2门课程,然后当我打印出下一个学生时,它列出了这个学生有多少门课程,例如。3等。有没有想法如何设置计数,所以它只对每个学生,只有它的课程,而不是所有他们?