2016-07-29 5 views
0

Я получаю следующее сообщение об ошибке:я получаю CS0029 ошибки

CS0029 Cannot implicitly convert type UnityEngine.Renderer[] to 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; 
     } 
    } 
} 
+1

Метод 'GetComponentsInChildren' вероятно возвращение' Renderer [] 'вместо' 'Список

+1

В чем проблема с этой ошибкой? У вас неправильный тип. Вы также создаете броский список. Измените тип «рендеринга» на правильный и удалите создание списка. –

ответ

2

Ошибка описательный. Вы должны преобразовать результаты в список:

renderers = GetComponentsInChildren<Renderer>().ToList(); 

Или изменить локальную переменную быть массивом:

Renderer[] renderers = GetComponentsInChildren<Renderer>(); 
1

Почему не просто перечислить пункты?

void Start() 
{ 
    foreach (Renderer r in GetComponentsInChildren<Renderer>()) 
     r.material.shader = shader; 
} 

единственное, что это дело в том, что GetComponentsInChildren<Renderer>() должен возвращать IEnumerable<Renderer> то, что это (массив, список ...)

1

Вы можете просто опустить тип и пусть компилятор сделать работу! Нет необходимости создавать новый список, если вы затем назначаете результат вызова метода переменной «renderers».

void Start() 
{ 
    var renderers = GetComponentsInChildren<Renderer>(); 
    foreach (Renderer r in renderers) 
    { 
     r.material.shader = shader; 
    } 
} 
Смежные вопросы