3.Texture、Shader、Material和GameObject物体之间的关系

本文详细介绍了Unity中材质(Material)的创建和应用,包括颜色设置、纹理贴图的添加以及渲染模式的选择。同时,阐述了Texture、Shader、Material与GameObject之间的关系:Shader定义渲染方式,Material是Shader的实例,用于赋值给GameObject的MeshRenderer组件,从而影响物体的外观。通过代码设置物体颜色,需从GameObject找到MeshRenderer,再修改Material的color属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

材质

颜色

1.在project里右键创建材质material
2.改材质
在这里插入图片描述

3将材质添加到物体
点击要添加到的物体,找到MeshRenderer这个组件,再找到里面的material,把要添加的材质拖拽进去。
在这里插入图片描述

在这个物体的inspector里也可以直接修改物体所持有的材质的属性,修改后,所有应用了同一个材质的物体都会被改变。
在这里插入图片描述

纹理(添加贴图)

unity认可的纹理文件有png、psd、jpg,一般使用png
纹理贴图作为资源放在文件夹里以后,可以直接拖到hierarchy里的物体上。Unity会自动生成一个材质。贴图设置的地方就在图中位置,把图片直接往这里拖也是一样的。
在这里插入图片描述albedo:漫反射的意思。
其他的类似反光、金属之类的的材质属性设置都在面板中。

### 使用 Unity Shader 实现物体逐渐透明慢慢消失的效果 为了实现物体逐渐透明并最终完全不可见的效果,在 Unity 中可以通过修改材质的透明度属性来达成这一目标。具体来说,这涉及到调整 `Alpha` 渠道的数值。 #### 方法一:通过脚本动态改变材质 Alpha 值 如果希望对象随着时间推移而变得越来越透明,则可以在 C# 脚本里定期更新该对象所使用的 Material 的颜色 alpha 组件: ```csharp using UnityEngine; public class FadeOut : MonoBehaviour { public float fadeSpeed = 0.5f; // 控制淡出速度 private Renderer rend; void Start() { rend = GetComponent<Renderer>(); } void Update () { Color color = rend.material.color; color.a -= Time.deltaTime * fadeSpeed; if (color.a <= 0) { Destroy(gameObject); // 当alpha小于等于零时销毁游戏对象 } else{ rend.material.color = color; } } } ``` 此方法适用于任何类型的着色器,因为它只是改变了材质的颜色参数而不是内部逻辑[^1]。 #### 方法二:自定义渐变透明度的 Surface Shader 对于更复杂的场景,可能需要编写一个专门用于处理透明度变化的 surface shader 。下面是一个简单的例子,它允许我们基于时间变量 t 来线性减少不透明度: ```cpp Shader "Custom/Fade" { Properties { _MainTex ("Texture", 2D) = "white" {} _FadeAmount("Fade Amount", Range(0,1))=1// 添加了一个可调节的透明度因子 } SubShader { Tags {"Queue"="Transparent" "RenderType"="Opaque"} LOD 200 CGPROGRAM #pragma surface surf Lambert alpha:fade vertex:vert sampler2D _MainTex; half _FadeAmount; struct Input { float2 uv_MainTex; }; void vert(inout appdata_full v){ // 可在此处添加顶点级别的操作 } void surf (Input IN, inout SurfaceOutput o) { fixed4 col = tex2D(_MainTex, IN.uv_MainTex); o.Albedo = col.rgb; o.Alpha = col.a*_FadeAmount;// 将纹理本身的alpha乘以_FadeAmount得到最终显示出来的alpha值 } ENDCG } FallBack "Diffuse" } ``` 在这个示例中,_FadeAmount 属性被用来控制整个模型的全局透明程度。当这个值从 1 减少到 0 的时候,就会看到物体由实心变为全透明白的过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值