[英]I keep getting Error CS0029
我收到以下錯誤:
CS0029無法將類型
UnityEngine.Renderer[]
隱式轉換為System.Collections.Generic.List<UnityEngine.Renderer>
代碼是:
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
public class AssignShadersToChildren : MonoBehaviour
{
private new GameObject renderer;
public Shader shader; // This should hold the Shader you want to use
void Start()
{
// We create a list that will hold all the renderers(objects)
// 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;
}
}
}
該錯誤是描述性的。 您需要將結果轉換為列表:
renderers = GetComponentsInChildren<Renderer>().ToList();
或將局部變量更改為數組:
Renderer[] renderers = GetComponentsInChildren<Renderer>();
為什么不只列舉項目?
void Start()
{
foreach (Renderer r in GetComponentsInChildren<Renderer>())
r.material.shader = shader;
}
唯一重要的是GetComponentsInChildren<Renderer>()
應該返回IEnumerable<Renderer>
無論它是什么(數組,列表...)
您可以簡單地省略類型,然后讓編譯器完成工作! 如果您隨后將方法調用的結果分配給`renderers'變量,則無需創建新列表。
void Start()
{
var renderers = GetComponentsInChildren<Renderer>();
foreach (Renderer r in renderers)
{
r.material.shader = shader;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.