首页 > 代码库 > 一个批量更改模型材质、颜色、贴图的通用方法
一个批量更改模型材质、颜色、贴图的通用方法
直接上代码:
/// <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、||等多个类,只能控制台输出错误了。
一个批量更改模型材质、颜色、贴图的通用方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。