13.精灵进阶之干活篇

13.精灵进阶之干活篇上

前文曾提及一种创建有纹理的精灵一步到位的方法,即在创建sprite同时也创建了相应地texture,不知客官还有印象。无疑这是一种简便的方法,但往往在实际开发一款复杂游戏时,你需要全盘接管纹理,比如遇到以下几种情况:

  • 多精灵之间共用一个纹理(简单理解成可复用的图片吧,虽然不是很恰当)。
  • 假如已经创建完一个有纹理精灵,此时你想更换一个新的纹理给它。
  • 采用一个纹理集合制作精灵动画。
  • 有时候创建纹理的数据并非来自于app bundle,比如从网络下载。
  • 将纹理预(提前)加载到内存中,当然是在呈现场景之前。

接下来我们将频繁接触SKTexture对象,生成纹理之后在使用它来创建一个新的精灵或为已存在的精灵“换装”。

加载App Bundle中的图片创建纹理

我想这是最常用的方法了,当你的设计师为你设计好一套图片,由你导入应用中,然后在实际代码中加载即可。通常代码是这样写的:

    //代码纯手工打入,且已简单形式给出 关键部分必定详细
    //只创建一次纹理即可 所以叫可复用图片 也就是多次使用
    let rocketTexture = SKTexture(imageNamed:"rocket.png")
    for i = 0;i<0;i++{
        let rocket = SKSpriteNode(texture:rocketTexture)
        rocket.position =  ... //自己定吧
        self.addChild(rocket)
    }

有时候纹理对象本身就好比一个占位符,不过已经包含了实打实的纹理数据(记住:程序都是0、1组成,到最后都是一串0、1),或许是因为纹理数据资源占用量大(我的理解),所以Sprite Kit 只会在有需要时才加载到内存中。

使用纹理图册(Texture Atlases)

实际开发中,我们会有灰常灰常多的图片,如果细分之下或许被归类到不同分类之中,比如人物的面貌一类、怪物的面貌一类、背景一类等等,这样有效的管理自然Sprite Kit也是支持的,也就是Texture Atlases,怎么划分来的合理呢?官方文档给了以下几种:

  • 一个人物的动画帧(比如一套技能动作或者人物行进动作 往往就是几张或十几张图片组成)。
  • 游戏的关卡图片。
  • 一些控件的图片(button,switch,slider等)

试想下,假如我们不有效管理这些散乱的对象,SpriteKit和图形硬件估计要累的够呛,自然你的游戏执行效果也不会太理想。现在有了Texture Atlases,一切都将变得美好。尽管现在是一个纹理图册,但是你仍然可以通过SKTexture来使用它们。

创建纹理图册

创建方法其实很简单,只需要把一个文件的后缀名改成atlas即可。
这一小节到此结束,谢谢,再见!



等等,这并非我的意愿,那么我们来谈及下如何用好一个纹理图册。
试想下我们创建了一个纹理图册,可曾考虑过里面的内容过多或是过少,如何平衡是个关键点!假如过少,那么意义不大,Sprite Kit执行效率还是很低,但是如果一股脑的全部放入,那么多纹理数据全局放入内存中,估计够呛!说到最后,你才是主导者,有效的分类,以及在多个纹理图集之间切换我想是最好的方法。

下集高潮来临,如何将纹理放入到纹理图集并运用,谢谢观看,在再见!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值