我在c#中有一个代码,它读取标记对象的材质,并根据我想要使用的着色器渲染它。我想知道是否有更简单的方法。在模型中有很多具有大量材料的物体。创建这些许多脚本然后在uniy3D上运行它们非常耗时。我想创建一个脚本,该脚本可以自动查找模型中对象的材质并将着色器应用于它们。
答案 0 :(得分:0)
将它放在父GameObject上,这应该有效,它会找到游戏对象子节点中的所有Renderer
,然后分配着色器。
using UnityEngine;
using System.Collections;
public class AssignShadersToChildren : MonoBehaviour
{
public Shader shader; // This should hold the Shader you want to use
void Start()
{
// We create a list that will hold all the renderers so we can then assign the shader
List<Renderer> renderers = new List<Renderer>();
renderers = GetComponentsInChildren<Renderer>();
// For every Renderer in the list assign the materials shader to the shader
foreach (Renderer r in renderers) {
r.material.shader = shader;
}
}
}
注意:这是在没有编译器的情况下编写的,因此有可能无法运行。
如果这回答了你的问题,请务必接受这个答案。