美文网首页
Unity 2D精灵

Unity 2D精灵

作者: 喜欢海苔Girl | 来源:发表于2020-07-20 21:55 被阅读0次

    什么是Sprite精灵

    2D游戏中的游戏物体,实际上是对图片的处理。把图片的格式转换成可以直接用在2D游戏中的格式,转换后的图片称为Sprite(精灵),为了提高性能,2D游戏开发时,美工会将不同的图片拼成一张大图,在引擎中会把这张大图中的某一部分读出来作为Sprite显示在屏幕中。

    精灵创建的两种方法

    1.第一种方法:将美工制作好的包含多个小纹理图片的大纹理图片,导入到Unity中进行格式转换,然后使用SpriteEditor工具将大图分割成若干个Sprite使用,具体操作流程如下:
    (1)导入一张图片到Unity中,如图:这里是将多个所用到的2D精灵放置在一张图片中:



    (2)将Texture Type设置成Sprite(2D and UI),Sprite Mode设置成Multiple,可以将大图分割为几个小图:



    (3)点击SpriteEditor打开编辑窗口,这里主要是对大小以及位置进行设置,方便分割图片:

    (4)点击Slice Type为切割方式,可以设置每个被切割的精灵的大小
    • Automatic 自动计算尺寸
    • Grid By Cell Size 按照被切格子的大小
    • Grid By Cell Count 按照被切格子的数量(即大图被分为几行几列)
      (5)选择合适的切割方式后点击Apply,对图片的操作如下图:



      (6)如果剪切不符合要求,可以选择多余的网格,按Delete键删除,然后选中要放大的网格,在右下角窗口修改尺寸,或者拖动网格改变尺寸



      (7)如果只是单独的精灵,Sprite Mode设置为Single,然后点击Apply即可

    2.第二种方法:直接将原始图片导入到Unity中,使用Unity提供的SpritePacker工具将导入的图片打包,再从打包后的图片读取Sprite。
    (1)SpritePacker打包精灵
    Edit -> ProjectSetting -> Editor中SpritePacker默认是Disabled,需设置为AlwaysEnabled(LegacySpritePacker):



    EnabledForBuilds:只有在到处游戏时使用。
    (2)选中要打包的精灵,设置Packing Tag,点击Apply,相同的PackingTag值得精灵会打包到一个包里:



    (3)然后打开Window -> Sprite Packer窗口,点击Pack即可,若干个小精灵打包到一个包里,等同于一张大图:

    (4)打包策略:
    • DefaultPackingPolicy:默认打包策略,图片正常排列,打包后的大小是2的幂次方,有时候会出现大量空间没有被充分利用。
    • TightRotateEnabledSpritePackerPolicy:紧密旋转打包策略,通过旋转精灵,减少两个精灵之间的空隙,进而减少打包后整个图片的大小。
    • TightPackerPolicy:紧密打包策略,在不旋转精灵的情况下让精灵进行紧密排列后在打包。

    引擎对精灵的优化

    • 同一个精灵,在场景中多次实例化时,只渲染一次,即DrawCall的值只会增加一次。
    • 一张大图包含多个精灵时,在实例化其中一个精灵时,GPU会把整个大图加载到内存中,再实例化其他精灵时,DrawCall的值也只会增加一次。
    • 如果多个精灵图片没有事先放到一张大图中,可以使用引擎打的精灵打包工具进行打包,打包后的精灵连续实例化的时候,DrawCall的值只会增加一次,打包后的资源会存放在工程文件夹中,是经过引擎处理过的,是不能直接读取出来

    图层排序

    游戏中的图片没有深度关系,都处于一个平面上,但在实际游戏中需要它们排序,按视觉的空间先后顺序显示。
    
    • OrderInLayer:只对有相同的SortingLayer的精灵起作用。
    • 可以先给不同的精灵设置不同的SortingLayer,然后再通过OrderInLayer对相同排序层的不同精灵进行排序,这样就会有层次感。

    相关文章

      网友评论

          本文标题:Unity 2D精灵

          本文链接:https://www.haomeiwen.com/subject/gbpxkktx.html