Unity 动态修改物体的材质Material

Unity 动态修改物体的材质Material

实现方法

获取物品Mesh Render下的Materials,进行一层或者多层的替换
在这里插入图片描述

代码

通过调用ChangeShader和ChangeShaderTwo来实现材质的更改

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ShaderChange : MonoBehaviour
{
    public Material mat;
    public GameObject go;
    public Button bt;
    void Start()
    {
        bt.onClick.AddListener(ChangeShaderTwo);
    }
    public void ChangeShader()
    {
        go.GetComponent<MeshRenderer>().material = mat;
    }
    public void ChangeShaderTwo()
    {
    	//Material[0]使用物体上的着色器Element0,Material[1]使用Standard
        Material[] materials = GetComponent<MeshRenderer>().materials;
        materials[1] = new Material(Shader.Find("Standard"));
        materials[1].color = new Color(1, 1, 1, 0);
        GetComponent<Renderer>().materials = materials;
    }
}

参考链接

unity动态修改物体材质Materials
Unity使用脚本更换物体材质球

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Unity动态增加物体材质,可以通过以下步骤实现: 1. 创建新材质:在 Unity 中,可以通过 Assets 菜单中的 Create -> Material 创建新的材质。也可以在项目中选择一个已有的材质,然后在 Inspector 窗口中点击右键,选择 Duplicate 创建一个新的材质。 2. 修改材质属性:在新创建的材质中,可以修改其属性,比如颜色、贴图等。 3. 将材质应用到物体:在场景中选择需要应用材质物体,然后在 Inspector 窗口中找到其 Renderer 组件,在其中的 Materials 数组中增加一个新的材质。 下面是一个简单的示例脚本,实现了动态增加物体材质的功能: ```csharp using UnityEngine; public class AddMaterial : MonoBehaviour { public Material material; // 新增加的材质 void Start() { // 在场景中找到物体的 Renderer 组件 Renderer renderer = GetComponent<Renderer>(); // 将新增加的材质应用到物体的 Renderer 组件上 Material[] materials = renderer.materials; Material[] newMaterials = new Material[materials.Length + 1]; for (int i = 0; i < materials.Length; i++) { newMaterials[i] = materials[i]; } newMaterials[newMaterials.Length - 1] = material; renderer.materials = newMaterials; } } ``` 在这个脚本中,我们先在 Inspector 窗口中将需要新增加的材质赋值给 material 变量,然后在 Start 函数中将其应用到物体的 Renderer 组件上。具体来说,我们首先获取物体的 Renderer 组件,然后将原有的材质数组复制到一个新的数组中,并在新数组的末尾添加新增加的材质,最后将新数组赋值给物体的 Renderer 组件的 materials 属性。这样,物体就会显示出新增加的材质
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值