/// <summary> /// 将制定GameObject存在的UITexture和UISprite去色,变灰 /// </summary> /// <param name="targetObj"> 目标物体</param> /// <param name="gray"> 是否变灰</param> /// <param name="atlasName"> 制定图集</param> public void ChangeObjectsToGray(GameObject targetObj, bool gray, AtlasName atlasName = AtlasName.EM_AtlasName_None) { UISprite[] sprites = targetObj.GetComponentsInChildren<UISprite>(); UITexture[] textures = targetObj.GetComponentsInChildren<UITexture>(); for (int i = 0; i < sprites.Length; i++) ChangeUISpriteToGray(sprites[i], gray, atlasName); for (int i = 0; i < textures.Length; i++) ChangeUITextureToGary(textures[i], gray); }
public bool ChangeUISpriteToGray(UISprite targetSprite, bool toGray, AtlasName atlasName = AtlasName.EM_AtlasName_None) { bool toGarySucess = false; if (targetSprite != null) { List<UIAtlas> findAtlas = new List<UIAtlas>(); if (toGray) findAtlas = grayAtlas; else findAtlas = normalAtlas; UISpriteData findData = null; string spriteName = targetSprite.spriteName; // 如果指定图集,不用查找直接更换图集即可(高效方式) if (atlasName != AtlasName.EM_AtlasName_None) { findData = findAtlas[(int)atlasName].GetSprite(spriteName); if (findData != null) { targetSprite.atlas = findAtlas[(int)atlasName]; toGarySucess = true; } } else { // 未指定图集,需要从现有的图集中查找对应的图集 for (int i = 0; i < findAtlas.Count; i++) { findData = findAtlas[i].GetSprite(spriteName); if (findData != null) { targetSprite.atlas = findAtlas[i]; toGarySucess = true; break; } } } } return toGarySucess; }