using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 修正UIshader /// public class FixUIShader : MonoBehaviour { private List imageMaterials = new List(); private List imageShaders = new List(); private List rawImageMaterials = new List(); private List rawImageShaders = new List(); private List spriteMaterial = new List(); private List spriteShaders = new List(); /// /// 时间 /// private float mTime = 0; private void Awake() { imageMaterials.Clear(); imageShaders.Clear(); rawImageMaterials.Clear(); rawImageShaders.Clear(); spriteMaterial.Clear(); spriteShaders.Clear(); Image[] imgs = GetComponentsInChildren(true); int length = imgs.Length; for (int i = 0; i < length; i++) { Material _mater = imgs[i].material; imageMaterials.Add(_mater); imageShaders.Add(_mater.shader.name); } RawImage[] rawImgs = GetComponentsInChildren(true); length = rawImgs.Length; for (int i = 0; i < length; i++) { Material _mater = rawImgs[i].material; rawImageMaterials.Add(_mater); rawImageShaders.Add(_mater.shader.name); } SpriteRenderer[] spr = GetComponentsInChildren(true); int sprLength = spr.Length; for (int i = 0; i < sprLength; i++) { Material _ms = spr[i].material; spriteMaterial.Add(_ms); spriteShaders.Add(_ms.shader.name); } } void Start() { for (int i = 0; i < imageMaterials.Count; i++) { imageMaterials[i].shader = Shader.Find(imageShaders[i]); } for (int i = 0; i < rawImageMaterials.Count; i++) { rawImageMaterials[i].shader = Shader.Find(rawImageShaders[i]); } for (int i = 0; i < spriteMaterial.Count; i++) { spriteMaterial[i].shader = Shader.Find(spriteShaders[i]); } } private void OnEnable() { mTime = Time.time; } private void OnDisable() { int diffTime = (int)(Time.time - mTime); if (diffTime <= 0) { return; } // 友盟统计: 页面统计 AndroidInteractive.CallJavaFunction("onEvent", "e_page_stay", "page_nameText", gameObject.name+"_"+diffTime.ToString()); } }