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

材质的对象)
相关推荐
玖玥拾6 小时前
Unity3D RPG 入门项目(四)背包拖拽、物品悬浮提示、项目开发思维
3d·unity·游戏引擎
xcLeigh10 小时前
Unity基础:Start与Update方法——Unity脚本生命周期初探
java·unity·游戏引擎·教程
郝学胜-神的一滴12 小时前
[简化版 GAMES 104] 现代游戏引擎 05:游戏引擎世界构建核心机制深度解析
c++·程序人生·unity·游戏引擎·计算机图形学·opengl
LONGZETECH1 天前
无人机实训高成本痛点解法:虚拟仿真实现 70% 耗材损耗下降
大数据·算法·unity·架构·无人机
五仁烧饼2 天前
Unity Addressables 静默资源策略
游戏·unity·addressables
fanfan_hongyun2 天前
unity 与cad 坐标系映射
unity·游戏引擎
神码编程2 天前
【Unity】 HTFramework框架(七十)MultiChoiceDropdown可多选的下拉菜单
unity·游戏引擎·ugui·dropdown·下拉菜单
淡海水3 天前
15-07-YooAsset面试篇-Unity性能优化与内存管理
java·unity·面试·性能优化·c#·游戏引擎
zhchyun20084 天前
# 【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(03)
unity
淡海水4 天前
15-02-YooAsset面试篇-Unity架构设计与源码
java·unity·面试·c#·游戏引擎·yooasset