一些废话

每一篇的首段都是这个“一些废话”,原因是我太能逼逼了,不逼逼一些废话我就觉得难受。这是我第四篇关于Unity的博文,前两篇还是去年写的,“从一点儿不会开始”系列,类似教程和学习笔记的博文,这个系列还会继续的,我没有太监。。。如果真的有朋友觉得能因此得到一点点的帮助,那就太太开心了。

最近在(shan)做(zhai)一个小游戏,UI刚开始用的是原生2D,用着用着发现NGUI似乎更省事儿(“为什么刚开始你不用NGUI?”“我擦我刚开始那会儿还不会好么。。。”),然后之前原生2D写的又不想完全删了重新搞。研究了一些时间,发现可以这么搞(高手就别看了,给一些类似我这样的菜鸟看着玩儿的)。

实现

NGUI 的 Button组建为我们提供了很多方便的事件,这里就不一一赘述了。

我这次主要是想做这样一个Button:普通状态的时候用第一张图片,按下的时候用第二张图片,这样看起来有个按下的效果。其实NGUI的Button组建原生是支持上述功能的,如图:

是的,Sprites集合中提供了四种状态时候呈现的样子。

但是,它必须是NGUI中的Sprite类型的,要想用,就必须将想用到的按钮制作成NGUI的图集,然后添加进来。

想想,如果我们确实有一张一张的PNG或其他格式的图片,直接制作成一个NGUI的图集确实没任何问题。

然而,加入我们只有一张本身就是图集的PNG呢?我们想要的按钮图片只是这张PNG中的一部分。这怎么做呢?还做成NGUI图集,然后慢慢切成单个的一个一个的小的NGUI的Sprite?呵呵,累死你!!!

Unity2d 为我们提供了一个非常方便的截取精灵的工具:Sprite Editor,如图:

将上述的PNG图集设置为 Sprite,Multiple,点击 Sprite Editor按钮。

然后就进来了,点击自动切割就切割好了。(这个工具太直观了,就算你第一次用,随便看看也就回了,这里就不在多废话说怎么用了)

切割了两个我想制作按钮的图片后。一切就都简单了。

在Hierarchy视图中创建一个空物体。再将刚刚的两个按钮图片一次添加为其的子物体。正常现实的那个设置为Active,按下才显示的那个Active为false。

如图:

然后给空物体添加NGUI的UIButton组建,再添加一个碰撞体并勾选上IsTrigger。

接下来我们就要写几行代码了。用来实现上上上上述功能“正常一张图、按下一张图”。

  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class NGUIButtonControl : MonoBehaviour
  5. {
  6. public GameObject NormalStyle;
  7. public GameObject PressedStyle;
  8.  
  9. void OnPress (bool isPressed)
  10. {
  11. if(PressedStyle !=null)
  12. {
  13. PressedStyle.SetActive(isPressed);
  14. }
  15. if(NormalStyle != null)
  16. {
  17. NormalStyle.SetActive(!isPressed);
  18. }
  19. }
  20.  
  21. }

哎呦,太特么简单了好么。

好了,把这个脚本挂载到空物体上。并将空物体的两个子对象(就是那两个原生2D切出来的精灵)分别赋给该脚本的NormalStyle和PressedStyle。

最终该空物体的组件如图:

好了。这就完成了。点击一下试试吧。: )

总结

这种方法一般适用于手中的资源不方便制作成NGUI的图集(“为什么不方便?”“废话我又不是美工,我这张图是从别人的包里考出来,啊不,从网络上下载的,就是一整张图集”),

然后又想实现按钮按下、抬起、等等效果的场景下。

主要是利用Unity提供的Sprite Editor工具来切割成一个一个原生2D的精灵。与NGUI为我们提供的UIButton脚本共同配合使用。

好了,又写这么多,其实真正内容几行代码,几句话就能概括。没办法,我就是爱逼逼逼逼逼逼。

另外说一句:阿里巴巴现在入职不给股票了。呵呵呵呵。

NGUI中Button与原生2D精灵的混合使用的更多相关文章

  1. 关于NGUI与原生2D混用相互遮盖的问题心得

    http://www.fzgh.org.cn/zuixindianying/144224.html Native2D自己可以使用Sort Layer来排序,每层又有不同的Order In Layer, ...

  2. Unity中的动画系统和Timeline(2) 按钮动画和2D精灵动画

    按钮动画 1 创建按钮后,按钮的Button组件中,Transition我们平时用的时Tint,这次选择Animation 选择Auto Generate Animation,创建一个按钮动画 2 后 ...

  3. Unity3D NGUI 给button按钮添加单间事件

    Unity3D中, NGUI 给button按钮添加单间事件的方法很多,在这里只给推荐一种比较常用的方法. 推荐方法:使用UIListener. 1.给button组价添加上UIListener.选择 ...

  4. 【Unity 3D】使用 2DToolkit 插件 制作2D精灵动画

    话说博客传图也太麻烦了吧,一个一个文件一个一个传....为什么不能直接粘贴了,自动上传呢... 刚直接粘贴了,结果一张图没有,又重新截一次图,在传了一次...真是太**了 好了,吐槽完了,开始博客吧 ...

  5. Unity3D在NGUI中使用mask

    过程是这样的:最近一直想做一个头像的mask效果,后来发现原来unity的mask需要用shader来写,网上找了不少资料,也能实现,不过大多数都是用render texture作为相机投影的text ...

  6. (转)NGUI中深度depth和z轴关系

    先列出转载链接: http://game.ceeger.com/forum/read.php?tid=8917 转载原文: 问题源自一个帖子,因为上传的图比较多,就另开了这个贴写下自己的试验结果,原帖 ...

  7. Android 中 js 和 原生交互

    Android中的WebView 中加载的URL 默认是在手机浏览器中加载的,我们可以覆盖这种默认的动作,让网页在WebView中打开.通过设置WebView的WebViewClent 达到这个效果. ...

  8. Android中Button的五种监听事件

    简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...

  9. ngui中 代码调用按钮事件(后来改成了按钮绑定键盘..)

    ngui中 代码调用按钮事件 好烦人啊这个问题, 我弄完发上来 这个问题解决了一半 发现可以用 按钮绑定来解决这个问题,并且更安全方便快速 直接在按钮上添加一个 key binding 指定按键 搞定 ...

随机推荐

  1. [大牛翻译系列]Hadoop(12)MapReduce 性能调优:诊断硬件性能瓶颈

    6.2.5 硬件性能问题 尽管单独的硬件的MTTF(平均失效前时间)都数以年记,然而在集群中就完全不是这么一回事了.整个集群的MTTF就要小得多.这一节要介绍如何确定CPU,内存,磁盘和网络是否过度利 ...

  2. 1. opencv的初体验

    http://guoming.me/opencv-config  这篇文章有讲解opencv的安装与配置 一些常用库 opencv_core249d.lib opencv_imgproc249d.li ...

  3. 【js】undefined

    alert(a); function name(parameters) { alert(parameters); } var a; name(a); ---输出结果--- underfind unde ...

  4. iOS中引用计数内存管理机制分析

    在 iOS 中引用计数是内存的管理方式,虽然在 iOS5 版本中,已经支持了自动引用计数管理模式,但理解它的运行方式有助于我们了解程序的运行原理,有助于 debug 程序. 操作系统的内存管理分成堆和 ...

  5. 【转载】link和@import的区别

    link和@import的区别 原文地址:http://www.cnblogs.com/zbo/archive/2010/11/17/1879590.html 页面中使用CSS的方式主要有3种:行内添 ...

  6. CoreLocation MKMapView 地图

    系统自带地图  框架: CoreLocation MapKit CLLocationManager --> 定位管理者  CLGeocoder --> 地理编码器 MKMapView -- ...

  7. VS2010常用插件介绍

    今天在写JS时,写到500多行时,感觉代码已经很难看了.想到C#代码都有折叠功能,是不是JS也有呢.在选项中找了一下,没有相关了的设置功能,于是就上网找.一找可就不得了,发现了好多好用的插件.都可以在 ...

  8. QT windows msvc下使用boost库(备忘)

    win32-msvc2015: { contains(QMAKE_HOST.arch, x86):{ INCLUDEPATH += D:\3SDK\boost_1_61_0 LIBS += -LD:\ ...

  9. CSS3属性box-shadow使用教程,css3box-shadow

    CSS3的box-shadow属性可以让我们轻松实现图层阴影效果.我们来实战详解一下这个属性. 1. box-shadow属性的浏览器兼容性先来看一个这个属性的浏览器兼容性: Opera: 不知道是从 ...

  10. SCI杂志更名时,如何计算影响因子?