【问题标题】:I keep getting Error CS0029我不断收到错误 CS0029
【发布时间】:2016-07-30 02:49:22
【问题描述】:

我收到以下错误:

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;
        }
    }
}

【问题讨论】:

  • 方法GetComponentsInChildren可能返回Renderer[]而不是List&lt;Renderer&gt;
  • 这个错误有什么问题?你有错误的类型。您还可以创建一个一次性清单。将renderers 的类型更改为正确的类型并删除列表的创建。

标签: c#


【解决方案1】:

错误是描述性的。您需要将结果转换为列表:

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

或者将局部变量改为数组:

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

【讨论】:

    【解决方案2】:

    您可以简单地省略类型并让编译器完成工作!如果您随后将方法调用的结果分配给 `renderers' 变量,则无需创建新列表。

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

    【讨论】:

      【解决方案3】:

      为什么不只列举项目?

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

      唯一重要的是 GetComponentsInChildren&lt;Renderer&gt;() 应该返回 IEnumerable&lt;Renderer&gt; 无论它是什么(数组、列表...)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-26
        • 2016-02-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-10
        • 2021-11-06
        • 2023-03-22
        • 2014-03-22
        相关资源
        最近更新 更多