直接上代码:
/// <summary> /// 更改模型材质 /// </summary> /// <typeparam name="T">要更改的类型如【Color,Texture,Material】</typeparam> /// <param name="models">Transform数组</param> /// <param name="t"></param> private void UpdateModelMaterial<T>(Transform[] models,T t) where T:new() { if (!typeof(T).Equals(typeof(Color)) &&!typeof(T).Equals(typeof(Texture2D)) && !typeof(T).Equals(typeof(Texture)) && !typeof(T).Equals(typeof(Material))) Debug.LogError("T的类型必须为Color,Texture,Material中的一个!"); //模型材质更改 foreach (var modelItem in models) { if (modelItem.renderer == null) continue; for (int i = 0; i < modelItem.renderer.materials.Length; i++) { if (typeof(T).Equals(typeof(Color))) modelItem.renderer.materials[i].color = (Color)(object)t; else if (typeof(T).Equals(typeof(Texture2D))) modelItem.renderer.materials[i].mainTexture = (Texture2D)(object)t; else if (typeof(T).Equals(typeof(Texture))) modelItem.renderer.materials[i].mainTexture = (Texture)(object)t; else if (typeof(T).Equals(typeof(Material))) modelItem.renderer.materials[i] = (Material)(object)t; } } }
由于C#泛型约束不能使用or、||等多个类,只能控制台输出错误了。
原文:http://www.cnblogs.com/townsend/p/4167849.html