1.5 Material

1.Material


1.Material

csharp 复制代码
在Unity中, 每个Renderer组件都会使用一个材质(Material)来定义其外观; 这个材质可以是独立的, 也可以是多个Renderer

共享的; Renderer组件有两种材质引用: sharedMaterial和material; 其中, sharedMaterial是共享材质, 而material在第

一次访问时会创建该共享材质的一个实例, 然后返回这个实例; 因此, 修改sharedMaterial会影响到所有使用该共享材质的对

象, 而修改material(实例材质)只会影响当前对象
csharp 复制代码
有一个重要的细节: 一旦你通过renderer.material获取了实例材质, 那么之后这个游戏对象就会使用这个实例材质, 而不再

使用共享材质; 所以, 如果你先获取了实例材质, 然后再修改共享材质, 那么这个游戏对象就不会被影响了, 因为它已经不再

使用共享材质了

csharp 复制代码
a.使用renderer.material时, Unity会为这个Renderer创建一个新的材质实例(即一个新的Material对象), 这个实例是独

立的, 修改它不会影响其他Renderer; 但是, 这也会导致一次内存分配, 因为创建了新的材质实例; 如果您的场景中有很多

对象, 并且每个都通过renderer.material来获取材质, 那么就会创建很多材质实例, 从而增加内存开销

b.使用renderer.sharedMaterial时, 您获取的是Renderer所使用的共享材质(即原始材质资源), 修改共享材质会影响到所

有使用这个材质的Renderer; 这样做不会创建新的材质实例,因此不会增加内存开销(但修改属性会同时影响所有使用该共享

材质的对象)
相关推荐
mxwin9 小时前
Unity Shader 半透明物体为什么不能写入深度缓冲?
unity·游戏引擎·shader
晚枫歌F10 小时前
三层时间轮的实现
网络·unity·游戏引擎
咸鱼永不翻身11 小时前
Lua脚本事件检查工具
unity·lua·工具
leo__52013 小时前
单载波中继系统资源分配算法MATLAB仿真程序
算法·matlab·unity
努力长头发的程序猿14 小时前
Unity使用ScriptableObject序列化资源
unity·游戏引擎
mxwin14 小时前
Unity Shader 手写基于 PBR 的 URP Lit Shader 核心光照计算
unity·游戏引擎·shader
小贺儿开发15 小时前
Unity3D 智能云端数字标牌系统
unity·阿里云·人机交互·视频·oss·广告·互动
魔士于安15 小时前
Unity windows 同步 异步 打开文件文件夹工具
游戏·unity·游戏引擎·贴图·模型
魔士于安16 小时前
unity lowpoly 风格 城市 建筑 道路 交通标志
游戏·unity·游戏引擎·贴图·模型
mxwin16 小时前
Unity GPU Shader 性能优化指南
unity·游戏引擎·shader