unity, GetComponent<MeshRenderer>().sharedMaterial 与 GetComponent<MeshRenderer>().material

我多个物体用的是同一个material,当我用gameObject.GetComponent<MeshRenderer>().sharedMaterial.SetColor("_Color",newColor)改变其中一个物体的颜色时,其余物体的颜色也跟着变了。

要想其余物体颜色不跟着变,应该用gameObject.GetComponent<MeshRenderer>().material.SetColor("_Color",newColor),这样会为此gameObject新创建一个material(即此gameObject不再使用公用material),代价是这个gameObject便不能与其余gameObject一起batch了。

时间: 2024-10-12 04:46:35

unity, GetComponent<MeshRenderer>().sharedMaterial 与 GetComponent<MeshRenderer>().material的相关文章

【Unity】11.5 物理材质 (Physics Material)

分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 物理材质 (Physics Material) 用于调整碰撞对象的摩擦力和反弹效果. 二.创建物理材质 要创建物理材质 (Physics Material),请从菜单栏选择[资源 (Assets)] -> [创建 (Create)] -> [物理材质 (Physics Material)].然后将物理材质 (Physics Material) 从[工程视图(Project View)]拖动到场景中的碰撞体(Coll

unity编辑器拓展七——脚本创建模型

描述: 其实这个教程到处都是,我真正想做的是把模型分成N个等分,实现动态加载.但是在网上搜索了很久,也没有搜索 到合适的方法,要么就是不写清楚,舍不得把代码全部放出来.要么就是自带地形的切割,最想要的是,t4m 刷完后直 接将模型分成N分,所以只能苦逼的从最mesh最基础的开始学吧. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using Sys

unity, 不要change Default sharedMaterial

假设在场景中加一个sprite,其材质使用默认的Sprites-Default. 若调用: Color color=sprite.GetComponent<SpriteRenderer>().sharedMaterial.color;        color.a = 0;        sprite.GetComponent<SpriteRenderer>().sharedMaterial.color=color; 则将导致场景中所有使用默认Sprites-Default材质的s

Unity 网格合并

从优化角度,Mesh需要合并. 从换装的角度(这里指的是换形状.换组成部件的换装,而不是挂点型的换装),都需要网格合并.材质合并.如果是人物的换装,那么需要合并SkinnedMeshRenderer,并重刷对应的骨骼列表.网格合并后对模型的渲染可以降低GPU的负担,但是经过测试发现,虽然网格合并了但是由于子物体网格的材质是不同的并没有降低DrawCall,如果把材质改成相同的,Unity自身会进行批处理合并,所以DrawCall就会减少!在MMO的游戏中,网格动态合并还是非常有必要的! 网格合并

unity编辑器和插件(三)

接下来 我就开始正规的编辑器和插件的制作. 我这里是按照 IOS android的 控件为例子模板.来制作 一套使用 unity书写的控件. 好首先我们来想下  IOS 和android的 控件都是以四边形基础的. SO, 接下来 我们来转像unity,在unity中 我们怎么去建立一个四边形那, 依照图形绘制的原理.三点一面的理论.我们可以使用6个点来建立一个两三角形组成的四边形. 我们先学会怎么去绘制一个view,也就是简单的一个色面. 我们知道 unity中得面也是采取这种的绘制方法,绘制

Unity中Mesh分解与边缘高亮加上深度检测

一个比较简单的需求,不过遇到些坑,记录下. 房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMesh对应的Material.如一个桌子的Mesh,其实有二个材质,分别对应二个SubMesh,一个桌面和一个桌脚,点击桌面后,只有这个桌面高光,而不是整个桌子,并且能单独更换这个桌面的Material. 我们知道Unity中,Mesh和Ogre一样,也是可以有多个SubMesh,每个SubMesh有

unity 编辑器和插件制作(四.2)

上次 我们讲述的是编辑器制作,怎么把图片加载到场景中,今天 我们就来讲述下,怎么 制作UIButton以及UIimage的互换. 废话不多说.进入正题. 首先我们要了解 unity的机制,button属性必须有的属性等. 首先 我们先说下 unity的机制: unity中检测点击事件,使用NGUI的可能知道,NGUI使用的就是SendMessage的方式来进行事件的传递.没错,这也是 unity最为简便的方式, (要注意一个问题哦,这个方式 如果 你要使用 大于 万次循环的话 会有延迟的哦,一般

unity编辑器和插件的制作(四.1)

好久没有更新,有些急事终于处理完了,接着更新博客! 废话不多说,接着上面的讲,今天我们来接着讲述. 前面说到 怎么去建立一个自己 ,用代码绘制一个色块,今天我们来讲述下,怎么绘制一个图片在场景里面. 首先 我们先做下图片的功课. 在unity中图片的种类分了很多,默认是:Texture, 还有其他的一些属性. 有些人可以会遇到 我放进去的素材为什么编译之后会变模糊那,这是由于,在unity中你没有修改图片的属性,导致的. 在 texture模式下, 我们来分析下这种图片的属性, wrap mod

Unity播放带Alpha通道的视频(unity play channel movie)

最近讨论在unity播放带alpha通道的视频,一开始一点效果也没有,然后搜索各种解决方案,总结出三种不太好的方案,有更好的方案的希望大家提出来. 方案重点两个方面:         1.能否播放带alpha通道的视频         2.播放的视频和三维场景的层级关系 1.剔除 使用一个剔除的shader,不渲染黑色部分 shader代码如下: Shader "AlphaVideo/CullingVideo" { Properties { _MainTex("Base (R