转自:http://blog.163.com/bowen_tong/blog/static/2068171742014212113057678/
最近正在使用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,其父物体发生了改变