zoukankan      html  css  js  c++  java
  • 制作精灵(UI Sprite)

    怎样判断是否应该使用精灵

      在一套UI中,精灵是一种非常常见的元件。当制作UI时,如果需要显示一张图片,需要先判断这个图片是否应该制作到图集里去,然后用精灵的方式去使用它,一般来说,可以遵循以下规律。

      1.首先说明一点,精灵是一个很基础的UI元件,经常不会独立使用,很多其他控件都会用到精灵。所以,精灵有的时候并不用独立使用的。

      2.对于一些展示型的图片,不会变化,只是起一个展示作用,如果它不大,它一般都是以精灵的方式去制作。

      3.如果要显示一个图片,它形状不规则,长宽不是2的N次方,那么一定要使用精灵。因为Unity对非2的N次方的图片处理要慢很多。

      4.如果这个UI元件经常性地出现,那么最好使用精灵,因为,这样它就可以和图集一起被载入内存,并不用新增一个DrawCall去渲染它。

    创建精灵

      1.第一种创建方式

      单击Unity顶部菜单中的NGUI菜单,选择Create->Sprite。会自动创建出一个带Sprite组件的物体,这就算创建成功了。

      特别说明一下,NGUI创建物体时会在选中的那个UI物体(可视为一个节点)下进行创建,如果没有选中任何的UI节点,它会默认在UI Root下创建。创建出的UI控件的本地坐标都为0(相当于Reset了一下,和父节点的位置保持一样),所以,使用3D UI的时候要注意,不要在UI Root所附带的Camera下面创建UI元件,否则会导致UI和相机在一个位置,导致相机看不到。

      2.第二种创建方式

      使用旧版本的创建方式,在Unity顶部菜单中选择NGUI菜单,选择Open->Widget(Wizard(Legacy))。

      打开后,其中选择想要创建的精灵所在的Atlas,然后再Template中选择Sprite,在Sprite栏单击会弹出你所设置的图集中的所有精灵,从中选择要创建的精灵,Pivot是精灵的锚点(中心点的位置,默认在图片中心点)。AddTo是选择要在哪一个UI节点下机型创建(额可以通过拖动的方式将UI节点物体拖到这里来),这个AddTo的默认值是在打开这个菜单之前所选中的UI节点物体。然后单击AddTo按钮,即可完成创建。

      3.第三种创建方式(不推荐)

      这种方式是不用NGUI的菜单来创建,通过Unity的空物体,然后为其附加相应组件来自制UI控件。

      首先在Unity顶部菜单中选择GameObject,然后选择CreateEmpty,这样就在场景中创建了一个空物体,再将这个空物体拖动到UI Root下,使它成为UI Root下的一个子物体,将这个空物体的transform组件Reset一下,这样这个物体就和UI Root根节点保持一样的位置了。然后将这个空物体的Layer改为和UI Roote的Layer一样,否则UI摄像机将无法渲染它。在这个空物体的Inspector面板中,单击Add Component按钮,选择NGUI,选择UI,再选择NGUI Sprite,就为这个空物体附上了Sprite组件。

      在这个Sprite组件中单击第一行的Atlas按钮,选择要创建的精灵所在的图集,然后单击第二行的Sprite按钮,会弹出这个图集所有的精灵预览界面,从中选择所要的精灵。精灵就自制完成了。

    Sprite组件的设置

      在Sprite组件面板中,可以设置如下的一些参数。

      1.Atlas。单击Atlas按钮将会弹出图集选择界面,可以选择要使用哪一个图集(如果弹出的图集选择界面没有我们要的图集,记得单击该面板中的ShowAll按钮)。

      2.Sprite。单击Sprite按钮,将会弹出该图集所拥有的精灵的预览界面,只需要在其中找到需要的精灵,然后双击,就完成了设置。

      3.Type和Flip。这里Type有5个选项:Simple(普通类型)、Sliced(切片类型)、Tiled(平铺类型)、Filled(填满类型)、Advanced(高级类型)。Flip选项是翻转选项,相应的Type下有不同的设置。

        Simple:这种类型下,图片会正常显示出来,图片是什么样它就是什么样显示。当将一个精灵的尺寸拉大时,它会以原图拉伸(可能会导致原图发生形变)的方式来完成,将精灵的大小通过拉动四周的蓝色锚点拉大,精灵就被拉伸了。

          在这种类型下,Flip有几个选项,分别是:Noting(不翻转)、Horizontally(水平翻转)、Vertically(竖直翻转)、Both(既水平又竖直翻转)。

          这里的翻转和Photoshop中的图片翻转式一个意思。

        Tiled:平铺类型,选择了之后,精灵尺寸会保持原来的尺寸不变,然后将精灵的尺寸拉大时,精灵会以平铺的方式来填充,并不会以拉伸的方式来填充。

        Filled:填满模式,这种模式可以设置图片填充一块区域的方式

          在Filled模式下,会多出Fill Dir、Fill Amount、Invert Fill 3个设置项。其中FillDir是指选择填充的方式,默认为360度填充。Fill Amount可以设置填充的比例,默认为1全部填充。InvertFill是设置填充的方向,不勾选是正方向,勾选是反方向。

      4.Widget模块。Widget模块是NGUI的控件组件都具有的一个模块。该模块的参数设置如下:

        Color:通过这里可以整体改变控件的颜色和透明度,改变颜色的规则为:原色值乘以这里设置的色值(Unity中,会把RGB色值从0~255转变为0~1的一个浮点数)。

          单击这个白色区域会弹出调色板,可以随意地在这里设置空间的颜色值和透明度。

          值得注意的是,如果通过这个控件改变了透明度,那么这个物体的自物体的控件透明度也会跟着被改变。

        Pivot:锚点设置,默认为中心点。通过这一排按钮可以设置出左上、顶中、右上、中左、中心、中右、左下、低中、右下一共9个点。

          这个锚点设置,改变的是图片的中心点位置,这个UI控件和其他UI控件之间的相对位置就是以这个点作为标准的。

        Depth:深度设置。可以通过单击Back和Forward来减1和加1,也可以直接输入一个深度数字来完成设置。

        Dimensions:尺寸,这里指的是控件的像素尺寸。单击Snap可以将图片的像素尺寸直接设置为原大小(这个图片被改成图集之前的图片大小)。

        AspectRatio:宽高比,AspectRatio后面的数字为当前该控件的宽高尺寸比例,后面有一个模式选择按钮,默认为Free,可为图片随意设置高和宽。这里除了Free以外,还有两个模式:以宽为基础、以高为基础。如果选择以宽为基础,那么图片的高度设置不论怎么设置都无效,都会以宽度和当前的宽高比计算得出。同理,如果选择了以高为基础,那么图片的宽度就无法被设置,它的宽度都会以高度和当前的宽高比计算得出。

  • 相关阅读:
    Building a Space Station POJ
    Networking POJ
    POJ 1251 Jungle Roads
    CodeForces
    CodeForces
    kuangbin专题 专题一 简单搜索 POJ 1426 Find The Multiple
    The Preliminary Contest for ICPC Asia Shenyang 2019 F. Honk's pool
    The Preliminary Contest for ICPC Asia Shenyang 2019 H. Texas hold'em Poker
    The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team
    robotparser (File Formats) – Python 中文开发手册
  • 原文地址:https://www.cnblogs.com/-soy/p/5847813.html
Copyright © 2011-2022 走看看