浅谈NGUI的NGUITools类

转载 2015年07月09日 19:33:22

转自:http://lizhiwei.me/?p=85

最近正在使用NGUI,发现这确实是个简单使用却功能强大的工具,用的过程中发现NGUI封装了许多有用的小工具类,比如今天想谈的NGUITools类。该类封装了诸如播放音效、获取组件等等方法。下面一一谈谈自己的浅见,主要就是对功能做了下说明,今后项目中如果遇到,再补充更多的实用体验吧,也希望大家多多拍砖。

static public float soundVolume

该属性是全局音效播放音量,按照文档说是用于NGUITools.PlaySound(),那也就意味着我的游戏如果用NGUITools.PlaySound()管理游戏中的音效,同时也可以用于产品音效控制。

static public bool fileAccess

该属性用于检测是否可以访问用户磁盘

static public AudioSource PlaySound (AudioClip clip)
static public AudioSource PlaySound (AudioClip clip, float volume)
static public AudioSource PlaySound (AudioClip clip, float volume, float pitch)

一系列重载方法,播放指定的音频,同时可以选择是否制定音量和音调。

static public WWW OpenURL (string url)
static public WWW OpenURL (string url, WWWForm form)

重载方法,获得网络连接内容。

static public int RandomRange (int min, int max)

获得包括最大值和最小值的一个随机整数

static public string GetHierarchy (GameObject obj)

返回一个物体容易识别的层次结构

static public Color ParseColor (string text, int offset)

解析字符串中包含的256位颜色,返回一个Color

static public string EncodeColor ( Color c)

ParseColor方法的逆向工作,用256位编码一个Color

static public int ParseSymbol ( string text, int index, List< Color> colors)

解析字符串中嵌入的标示符,比如设置颜色的[FFAA00]或者是取消颜色变化的[-] NGUI的label支持自定义文字颜色,应该就是利用这个方法解析

static public string StripSymbols ( string text)

将指定字符串中的标示符去掉

static public T[] FindActive () where T : Component

找到所有指定类型的活动的物体

static public Camera FindCameraForLayer ( int layer)

找到指定层中负责绘制物体的摄像机,这个看起来会用到

static public BoxCollider AddWidgetCollider ( GameObject go)

给包含有一个或多个Widget的物体添加一个collider

static public string GetName () where T : Component

辅助方法,以字符串的形式返回类型名称

static public GameObject AddChild ( GameObject parent)

添加空的子物体

static public GameObject AddChild ( GameObject parent, GameObject prefab)

从预设生成物体并作为子物体添加给指定物体。这个十分有用,尤其是动态生成场景或者菜单时,添加子物体后需要自己处理子物体的localpostion和localrotation等,这个方法把这些全部集成了,而且返回添加后的子物体,进一步操作也很方便啊

static public int CalculateNextDepth ( GameObject go)

返回物体下所有组件的最上层深度+1,用于下一个组件,动态添加组件时会用到

static public T AddChild (GameObject parent) where T : Component

添加包含指定类型组件的子物体

static public T AddWidget (GameObject go) where T : UIWidget

添加指定类型的组件

static public UISprite AddSprite ( GameObject go, UIAtlas atlas, string spriteName)

添加一个基于指定图集的Sprite,如果Sprite包含inner rect,添加的就是UISlicedSprite否则就是常规的sprite

static public T FindInParents (GameObject go) where T : Component

返回物体自身或父物体上的指定类型组件

static public void Destroy (UnityEngine. Object obj)

销毁指定物体,如果是编辑模式就立即销毁(Object .DestroyImmediate方法)

static public void DestroyImmediate (UnityEngine. Object obj)

立即销毁(Object.DestroyImmediate方法)指定物体,如果不是编辑模式,就用Destroy方法代替

static public void Broadcast ( string funcName)
static public void Broadcast ( string funcName, object param)

调用所有在本场景中的指定方法

static public bool IsChild ( Transform parent, Transform child)

判断当前层次中‘parent’是否包含‘child’,如果二者都存在并且存在父子关系或二者相同都返回真

static void Activate (Transform t)

激活指定的物体及其子物体

static void Deactivate (Transform t)

停用指定的物体及其子物体

static public void SetActive ( GameObject go, bool state)

用这个方法代替Unity内置的SetActive方法,内置的SetActive有个问题就是内置方法是先激活子物体后激活父物体,这样当子物体的wedget需要调用父物体的panel时,就会出问题了。

static public void SetActiveChildren (GameObject go, bool state)

管理子物体的状态,激活或停用。

static public bool GetActive(GameObject go)

获得物体的状态,是否激活

static public void SetActiveSelf(GameObject go, bool state)

管理物体本身的状态,激活或停用

static public void SetLayer (GameObject go, int layer)

设定物体的层

static public Vector3 Round (Vector3 v)

对一个Vector3变量取整

static public void MakePixelPerfect (Transform t)

对指定变换做PixelPerfect操作

static public bool Save (string fileName, byte[] bytes)

把指定的2进制数据存储到指定文件里

static public byte[] Load (string fileName)

从指定文件加载数据

static public Color ApplyPMA (Color c)

这个真不太懂,懂的同志指导我下啊

static public void MarkParentAsChanged (GameObject go)

通知指定物体下得所有widget,其父物体发生了改变

浅谈NGUI的NGUITools类

转自:http://blog.163.com/bowen_tong/blog/static/2068171742014212113057678/
  • kj297296053
  • kj297296053
  • 2014年11月12日 16:20
  • 981

Unity NGUI使用总结

Component - NGUI  - Interaction - Grid 将子对像全部归为组,可以调整排例顺序与间距,Scale中 X Y Z值为1就是在这个方向可以拖动,加上Center On...
  • goodai007
  • goodai007
  • 2013年03月14日 11:20
  • 4948

Unity NGUI 描点控件的位移动画

要让一个描点的控件动画移动到一个Position,可以用TweenPosition,但是这个只能用在Position是固定的情况下,而且不能根据分辨率适配来进行移动。以NGUI自带的示例场景"Exam...
  • akof1314
  • akof1314
  • 2014年09月01日 12:32
  • 4339

对《浅谈数位类统计问题》的学习

学习了一下数位这类问题,看了这篇论文,不错,把代码敲了一下,没有注册账号验证一下,仅供参考。 论文:点击打开链接 【例题 1】Amount of degrees (ural 1057) 题...
  • loveyou11111111
  • loveyou11111111
  • 2016年02月19日 14:18
  • 274

浅析NGUITools.DestroyImmediate和NGUITools.Destroy的区别

在做项目的时候用到了NGUITools.DestroyImmediate()来做一些删除操作.这可把我害惨了...... 当时的情况,看代码.... 这个是加了判断条件了的,之前只有第35...
  • qq_18536721
  • qq_18536721
  • 2016年01月06日 12:24
  • 976

[C++]浅谈构造函数

什么是构造函数? 构造函数是一种随着对象创建而自动被调用的函数,主要作用是对对象作初始化。 C++中规定与类同名的成员函数就是构造函数。构造函数应该是一个公有的成员函数,并且构造函数没有返回值类型...
  • michellechouu
  • michellechouu
  • 2016年02月20日 13:49
  • 197

NGUI学习笔记 - 通过UIEventlistener和UIbutton来学习NGUI的消息机制

先来看UIEventlistener脚本首先定义了六个代理类型: public delegate void VoidDelegate (GameObject go); public de...
  • qq_14843195
  • qq_14843195
  • 2015年05月06日 18:33
  • 939

NGUI中EventDelegate时间委托的使用方法

EventDelegate是用于底层进行消息传递和调用的事件委托类型,主要用于对对象事件的监听和处理。 它实际上是一个能够持有对某个方法的引用的类。下面以一个UIButton的单击事件为例,将Clic...
  • yangyong0717
  • yangyong0717
  • 2017年05月07日 10:06
  • 761

浅谈人工智能

历史      各个文明中都有杰出的工匠发明了自动机器来代替人类劳动,早在春秋时期鲁班就发明了世界上第一个机器人,可在空中飞翔‘三日不下’;三国时期蜀汉的诸葛亮发明了‘木牛流马’来运送战备物资,称得上...
  • oba_gaga
  • oba_gaga
  • 2016年10月09日 20:57
  • 4231

List<T>和NGUI BetterList<T>

BetterList这System.Collections.Generic改进后的版本。列表中不释放缓冲区,导致更好的性能和更少的垃圾收集。 正方观点:BetterList执行速度比起List快,当你...
  • U3D_YSJ
  • U3D_YSJ
  • 2015年12月16日 15:24
  • 1736
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈NGUI的NGUITools类
举报原因:
原因补充:

(最多只允许输入30个字)