码迷,mamicode.com
首页 > 其他好文 > 详细

13.精灵进阶之干活篇

时间:2015-04-11 10:24:39      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:精灵   纹理   开发   进阶   方法   

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执行效率还是很低,但是如果一股脑的全部放入,那么多纹理数据全局放入内存中,估计够呛!说到最后,你才是主导者,有效的分类,以及在多个纹理图集之间切换我想是最好的方法。

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

13.精灵进阶之干活篇

标签:精灵   纹理   开发   进阶   方法   

原文地址:http://blog.csdn.net/colouful987/article/details/44992725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!