• NGUI 学习


      NGUI 基础制作 

          制作图集:使用 TexturePacker 制作图集

               1 .选中图片 ,拖入 sprites 视窗

        2. 左边视窗 ,第一行选择Unity3D输出,Layout 栏 不选allow rotation ,不旋转

        3.publish 导出 ,png图集和txt文件坐标

              将图片导入unity后:

                       1. Texture Type(贴图类型) 选择 Advance .

                       2. 不选择Generate Mip Maps  

    3                 3 . 选择 Alpha is Transparency ,透明

            4.  max size 设置原图大小

            5.   Format: RGBA 32 bit ,ARGB 32 bit 都行

            创建材质:material ,我用的unity 5.0 ,创建材质后,shader有很多不同的 ,选Unlit /Tranparent Colored (关于材质 、纹理等是资源管理模块,待复习总结)

           添加一个新物体,添加NGUI的 UIAtlas 脚本,给material 附上我们创建的材质。并且导入Txt 

      

    使用UISprite UILable 等制作一个输入框:

    ---------------------------------------------------------------------------------------------------------------------------

        UI Atlas:里面使用九宫格 ,可以切图片边缘。、

                在用texture Paker 做 图集的时候会生成 一个大的png 图集,和一个txt 文件的 sprite坐标信息。我们就是用这两个东西做图集。

                UIAtlas 是个容器,里面包含的就是我们的png图集了,里面一个个小的图就是sprite。

                参数:

                Material 指向当前atals正在使用的材质。在材质中最好使用NGUI提供的一些unlit shader,例如Unlit-Transparent Colored

        TP Import 让你可以导入完整的使用texture packer程序制作的sprite定义表。只需要把导出来的txt文件拖动进去,所有的sprite      会自动导入。如果你使用内置的atlas maker来创建atlas,你可以放心的忽略这个参数

        New Sprite 按钮让你可以创建一个新的sprite。它会自动克隆当前选中的sprite的所有参数

        Delete 按钮让你删除一个不再使用的sprite。会弹出一个确认框

        Sprite 下拉列表让你选择当前需要的sprite

        Edit Name 区域让你可以将sprite重命名

        Dimensions 是用来标示你的sprite的起始位置和大小

        Border 允许你标示sprite的哪一部分不能被缩放,或者只能在一个方向缩放。Sliced sprite会使用这个参数

        Padding 是4个边缘的边框宽度。可以用来调整中心点位置,同时在对sprite进行微调的时候也非常重要

        Show 区域让你测试你的sprite和它在atlas中的位置

               

    提示

    1. 你可以使用多个atlas来对sprite进行分组。只要atlas使用的是同一个材质,他们就只需要消耗一个draw call

    2. 为了最好的结果,材质使用的贴图的混合模式最好选择Clamp,并且格式选择Truecolor

    3. 将相似的texture组合在一起组成一个atlas是一个不错的选择, 但是最好将同时使用的atlas的数量降低到最小

    4. 如果你使用texture packer创建atlas,在导出的时候选择Unity3D

    5. 如果你使用photoshop来创建atlas,你可以使用selection工具和信息版来确认sprite的位置和大小

    http://blog.csdn.net/ldghd/article/details/7853889

       

    ----------------------------------------------------------------------------------------------------------------------

         UISprite  :常用的:

                           simple

                          Sliced 裁剪

                          Filled Both 做技能CD

         使用一些小的图片,放大后,通过裁剪。还能很好的使用,减少的资源包的大小,优化了游戏的性能。

    ---------------------------------------------------------------------------------------------------------------------------

        UIlable

         字体:可以调整,颜射,渐变,勾选BBCode的话,就可以 用BB代码调整  字体颜色,加粗什么的 ,更有可控性。

         通过脚本可控制 所有变量,alpha 值透明度。 修改变量的技巧更加面板上的值可以在代码中修改。

          widget  装饰,pivot 对齐方式,这里可以通过代码可控,UIWidget 类 给出了装饰的一些 修饰,包括 布局,深度, 大小,方向(Aspect)。 这里解决了以前一直困扰我的一个问题,对NGUI不熟,改变了布局 导致 原点坐标有差异。而无法自适应。

       ---------------------------------------------------------------------------------------------------------------------------

       UIAnchors

        

    概览

    UIAnchor让你可以固定game objects在屏幕或者其他widgets的某一边或者某一个角。这是一个关键的组件,用来在NGUI中创建模块化的UI。 

       

    是否想让你的一部分UI粘在屏幕的角落或者边缘上?比如魔兽世界。在这个游戏中,游戏地图永远在屏幕的右上角,热键一直在屏幕的下方,不管你用的是多大的屏幕分辨率。你如何做到类似的东西呢?用anchors。

    NGUI的默认UI布局会给你提供一个anchor——一个居中的anchor。以魔兽世界的UI为例子,你需要增加额外的两个anchor。一个设置成TopRight,另一个则为Bottom。之后你给这两个anchor增加一些子节点,然后修改屏幕的尺寸,你会发现UI会一直在你想要的地方(右上方或者下面)。

    通过设置anchor的Container让一个UI附着在另一个UI上。如果Container是UIWidget,那么会用widget的dimesions来代替屏幕矩形(就是TopRight将将是相对与这个widget,而不是屏幕)。如果是game object,那么这个矩形就是game object下的所有节点widget的bounds。因为这个原因,当你用父节点当做Container的时候一定要注意,因为父节点的Container大小会包含这个你要anchor的widget,这可能不是你要的效果(比如你要放在父节点的左上角,但是当这个widget到了左上角后,父节点的左上角由于这个widget的到来可能就变了,之后再次移动widget,周而复始……)。

    调整Relative Offset来用相对值来改变位置。 如果X是1就是100%的container宽度. Y是1就是100%的container高度。 0.5 = 50%,等等。也可以是负数。

    上面的调整也可以通过用Pixel Offset来实现。就和你想的差不多……通过给定的X、Y的值来以像素为单位调整anchor的偏移。


    默认情况下anchor只会执行一次。如果要在每个update里面都执行,那勾选掉Run Only Once选项。

    -----------------------------------------------------------------------------------------------------------------------

        UITexture:

              UIBsicSprite : UIwidget : UIRect : MonoBehaviour

             

    总览

    UITexture是NGUI中最基础的可绘制组件。它继承了UIWidget的所有功能,并增加了一个可视组件-- texture--通过它的大小来伸缩。

    • 你能指定一个Texture用于绘制。当你这样做的时候,将会创建一个默认的Material。如果你不指定一个texture,将使用Material的texture。
    • 如果你想要的话,你也能指定一个你自己的Material。除非你指定了材质,它才会使用材质的main texture,否则将使用你上面指定的texture。
    • 如果你不想创建一个Material,你也可以指定Shader来代替。
    • 你能指定一个UV Rectangle用于控制texture的那部分会被绘制,X和Y控制UV的偏移,W和H控制UV的宽度和高度(texture坐标)。和所有的纹理坐标相似,这些值通常是0到1(0意味着texture的一边,而1意味着另一边)。UVs是基于左下角的,所以如果你想要绘制纹理半部分,你应该指定UV Rectangle为(0,0.5,1,0.5)
    •  选择菜单中的“Make Pixel-Perfect”选项将让UITexture恢复到它的原始大小,所以如果源texture为300*200像素,你的UITexture的宽和高会调整到那个大小。
     

    Pro-Tip

    你能使用UITexture创建你的整个UI,然后通过打开图集制作器(NGUI > Open > Atlas Maker)简单地把它增加到图集,选择你UI的root,点击Create按钮。你的所有Texture将替换这个图集里面的,并且使用Sprite来替代

               贴图:设置贴图的选项

    ----------------------------------------------------------------------------------------------------------------------

        UIInput 

         通过 box Collider

         制作点击响应 

            

    UIInput:用户输入框,可以输入格化的内容,如密码,用户名

    UICheckBox:勾选框

     

    UIInput:在Widget Tool里选择UIInput然后选择一个背景图片,添加到视窗面板里

    加入后,有三个对象,分别是Input,Background,Label

    Input:用户点击后进行输入的主控件

    Box Collider:用户点击后进行输入监控区域

    UIInput(Script):

    Label:文本显示在哪个UILabel里

    Starting Value:输入框开始显示的字

    Saved As:保存输入内容到prefabs中

    Active TextColor:激活文本框后显示颜色

    Inactive Color:默认状态颜色

    Caret Color:插入字符状态颜色

    Selection Color:选择状态中字符的颜色

    Input Type:输入类型(standard)标准的,(AutoCorrect)自动修正,(Password)密码

    Keyboard Type:对应移动平台键盘类型

    Validation:输入类型限制

    Character Limit:输入字符数限制

    On Submit:输入完后进行事件分发

    On Change:输入字符有变动时进行事件分发

    然后是一个UISprite & UILabe

    UICheckBox:

    在Widget Tool里添加几个Toggle

    Group:单选组,当你有多个CheckBox需要单选时,得定义在同一个组内

    Starting State:单选组的默认状态(默认哪个选中)

    State Transition:状态过渡时的图片与动画选项

    Sprite:选中状态的图片

    Animation:选中状态时播放动画

    Transition:从未选中到选中状态的过渡效果(Smooth,平滑过渡 & Instant,直接替换)

    OnValueChange:当事件发生改变时进行事件分发

    有一个UIButton Scale(Script):当点击时播放Tween动画选项

    Script:Tween动画功能脚本

    Tween Target:播放动画的目标

    Hover:鼠标停留在上面时播放的动画

    Pressed:按下时播放的动画

    Duration:动画持续的时间

    UIPlay Sound Script:用户点击时播放声音

     ------------------------------------------------------------------------------------------------------------------

       UIButton scale 

         能改变大小

      UIButton Color

       该变状态颜色

     UIButton Rotation

       旋转

     

        记住一点,一切代码控制的思想 为好。 当然,能减少我们工作量的话就不用执拗了。但是要是在明明白白的情况下才去用可视化界面。

        

        

  • 相关阅读:
    PHP和数据库相关的事
    angular的学习进阶(十七)
    javascript原生技巧篇
    ScrollReveval.js 视差滚动的探索
    django 武沛齐老师-最后一篇随笔
    去除HTML中input[type="number"]的默认样式
    git push时报错 ssh: Could not resolve hostname origin: Name or service not known fatal: Could not read from remote repository.
    Heroku 免费容器服务申请,搭建 V2+CF 方法教程
    96000个「企业码」背后,余杭区政企数智化能量爆发
    数据生态的过去、现在和未来
  • 原文地址:https://www.cnblogs.com/bambomtan/p/4615034.html
Copyright © 2020-2023  润新知