小编Kni*_*gon的帖子

在Sprite Kit中复制粒子发射器效果

我需要有一个粒子发射器效果在2个点出现重复(为了分屏目的),我想知道是否有人遇到过这样做的方法.我的目标是在iOS 10上运行.这是我到目前为止所尝试的.

  1. 分配targetNode给一个SKNode然后复制SKNode每一帧:targetNode对我来说在iOS 10中不起作用.
  2. 将粒子发射器分配给a SKNode,并使用view.textureFromNode纹理来复制每一帧:占用帧的1/120,对我来说太慢了.
  3. 将自定义操作分配给将节点复制到另一个节点的粒子节点SKNode:操作不会在iOS 10上运行
  4. 复制现有的粒子节点,希望种子不是随机的:种子是随机的
  5. 尝试在更新时复制粒子发射器:粒子只在原点产生
  6. 尝试SKReferenceNode:只是发射器的副本,自己运行

我留给真正发光的唯一选择是写我自己的粒子发射器,我试图避免,所以我想知道是否有其他人有这个问题,并知道一个解决方案,以达到预期的效果.

我能做的另一件事是预渲染发射器,但如果我走这条路线,这将占用大量纹理内存.

编辑:为了帮助可视化,我绘制了一张图片,白色边框显示了分屏的位置.黑色边框显示场景包装发生的位置. 在此输入图像描述

截至目前,玩家1和玩家2都在原始场景中.

球员2正在向右走,即将击中一个世界包裹将他移到世界的左手边,但他还没有击中它.所以我需要有一个场景的副本,以便它在视觉上看起来像一个场景.由于播放器1仍在原始场景上,原始发射器需要保持原位.玩家2将不得不在副本中看到相同的图像,否则一旦他通过该边界,就会发生"毛刺"效果,现在包裹的幻觉消失了.

最后结果:

我们只是说F %%%它,播放器1和播放器2将查看不同的发射器节点,我们将在需要时将发射器连接到每个播放器相机.

sprite-kit skemitternode swift

23
推荐指数
1
解决办法
745
查看次数

SKTextureAtlas不再在iOS 10中共享纹理

看起来当从纹理图集中提取纹理时,我现在正在生成新的纹理,而不是使用iOS 10在不同的精灵上使用相同的纹理.在iOS 9上,这可以按预期工作.还有其他人遇到过这个问题吗?也许有一个我错过的步骤,现在是iOS 10的一部分.

注意:我创建了一个示例项目并创建了一个新的图集,然后在@ 1x中拖动了太空船,我也尝试了预加载,并且没有做任何事情.

码:

  let atlas = SKTexturAtlas(named:"Sprites")
  var texture = atlas.textureNamed("Spaceship")
  print("\(Unmanaged.passUnretained(texture)),\(Unmanaged.passUnretained(texture).toOpaque())")

  texture = atlas.textureNamed("Spaceship")
  print("\(Unmanaged.passUnretained(texture)),\(Unmanaged.passUnretained(texture).toOpaque())")
Run Code Online (Sandbox Code Playgroud)

编辑:为了解决比较问题,我使用description属性来比较2个纹理是否相等.为了使其工作,您不能使用2个地图集,每个地图集包含具有确切名称和大小的纹理.我永远不会遇到这种情况,但对于那里寻求帮助的人来说,请记住这一点.

sprite-kit swift ios10

6
推荐指数
1
解决办法
385
查看次数

游戏中心排行榜分数删除

我已经成功地在游戏中心创建了一个排行榜,它运行良好。但是,我想删除我个人在那里作为测试提交的分数。

删除app后用Xcode重新加载,我的高分还在gamecenter!我不知道如何实际删除它。

我怎样才能删除分数?感谢:D

game-center game-center-leaderboard

3
推荐指数
1
解决办法
921
查看次数

将结构映射到本机数据类型

我有以下结构:

Public Structure NonNullableString


    Public Sub New(Optional value As String = "")

        Me.Value = If(value, "")
    End Sub

    Private m_Value As String
    Public Property Value() As String
        Get
            Return If(m_Value, "")
        End Get
        Private Set(value As String)
            m_Value = value
        End Set
    End Property
    Public Shared Widening Operator CType(value As NonNullableString) As String
        Return value.Value
    End Operator
    Public Shared Widening Operator CType(value As String) As NonNullableString
        Return New NonNullableString(value)
    End Operator



    Overrides Function ToString() As String
        Return Value
    End Function …
Run Code Online (Sandbox Code Playgroud)

vb.net

0
推荐指数
1
解决办法
29
查看次数