加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – SKTextureAtlas不再在iOS 10中共享纹理

发布时间:2020-12-14 05:45:32 所属栏目:百科 来源:网络整理
导读:似乎从纹理图集中提取纹理时,我现在正在生成新纹理,而不是在iOS 10中使用相同纹理跨越不同的精灵.在iOS 9上,这可以按预期工作.还有其他人遇到过这个问题吗?也许有一个我错过的步骤,现在是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())")

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

我做了同样的测试并得到了相同的结果.

我不确定100%,但似乎在Swift 3的开发期间有一个提议here将Unmanaged改为使用UnsafePointer.

但是如果你试图做:

func address<T: AnyObject>(o: T) -> String{
     let addr = unsafeBitCast(o,to: Int.self)
     return NSString(format: "%p",addr) as String
}

用法:

print(address(o: texture))

在iOS9中你有正确的值,在iOS10错误的结果.

我认为你是对的,我们正面临着一个错误(另一个……)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读