C# 尝试查找数组元素时出错

C# 尝试查找数组元素时出错,c#,unity3d,C#,Unity3d,我怎样才能找到“复选框”元素,用它们组成一个数组?我不想公开变量,因为有很多元素 出现此错误:Assets/_TES/Scripts/CheckboxEnabledSaver.cs(13,40):错误CS0029:无法将类型UnityEngine.GameObject[]隐式转换为checkbox[] using System.Collections; using System.Collections.Generic; using UnityEngine; using SickscoreGame

我怎样才能找到“复选框”元素,用它们组成一个数组?我不想公开变量,因为有很多元素

出现此错误:Assets/_TES/Scripts/CheckboxEnabledSaver.cs(13,40):错误CS0029:无法将类型
UnityEngine.GameObject[]隐式转换为
checkbox[]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SickscoreGames.HUDNavigationSystem;

public class CheckboxEnabledSaver : MonoBehaviour 
{
private CheckBoxes[] checkboxes;
public string file = "myFile.txt";

void Start()
{
    CheckBoxes[] checkboxes = GameObject.FindGameObjectWithTag ("TESOROS").GetComponents<CheckBoxes>();
}

public void SaveCheckboxes()
{

    bool[] checkboxEnabled = new bool[checkboxes.Length];
    for(int i = 0; i < checkboxes.Length; i++)
        checkboxEnabled [i] = !(checkboxes [i].sCollider.enabled);
    ES2.Save(checkboxEnabled, file);
}

public void LoadCheckboxes () 
{
    if(ES2.Exists(file))
    {
        bool[] checkboxEnabled = ES2.LoadArray<bool>(file);
        for(int i = 0; i < checkboxes.Length; i++)
        {
            if(checkboxEnabled [i])
            {
                checkboxes [i].sCollider.enabled = false;
                checkboxes [i].ChangeIcon ();

            }

        }
    }
}

}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用SickscoreGames.HUDNavigationSystem;
公共类CheckboxEnabledSaver:单行为
{
私人复选框[]复选框;
公共字符串file=“myFile.txt”;
void Start()
{
复选框[]复选框=GameObject.FindGameObjectWithTag(“TESOROS”).GetComponents();
}
公共作废保存复选框()
{
bool[]checkboxEnabled=新bool[checkboxes.Length];
对于(int i=0;i
作为第二个问题的答案(空引用“异常”)-

在Start方法中,您声明了一个本地复选框数组,该数组隐藏了类字段声明-use

void Start()
{ 
  checkboxes = GameObject.FindGameObjectWithTag("TESOROS").GetComponents<CheckBoxes>();
}
void Start()
{ 
复选框=GameObject.FindGameObjectWithTag(“TESOROS”).GetComponents();
}

其中哪一个是第20行?将
GetComponent
更改为
GetComponents
作为
GetComponents
返回数组,而另一个返回单个对象。注意其中的“s”。投票决定以简单的打字问题结束。@Jerodev这是第13行。抱歉!@Programmer我已更新代码,将“s”添加到GetComponent,但现在没有出现以下错误:NullReferenceException:对象引用未设置为对象的实例CheckboxEnabledSaver.SaveCheckboxes()(位于Assets/\TES/Scripts/CheckboxEnabledSaver.cs:19)CheckBoxes+c\u迭代器1.MoveNext()(位于Assets/\TES/Scripts/CheckBoxes.cs:174)UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator枚举器,IntPtr returnValueAddress)(at/Users/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)这是一个完全不同的错误。请为此创建一个新问题,不要将该错误用作标题,因为它将被关闭。最好双击该错误,并在新问题中发布导致该错误的代码行。问题中的错误是“无法隐式将UnityEngine.GameObject[]类型转换为复选框[]”"你的回答没有提到这一点。虽然它讨论了另一个问题,但答案是指程序员在初始修复后报告的错误OP。目前OP没有按照建议发布另一个问题-所以我提前发布了这个答案。我已经澄清了答案。好的。我想OP说他在上得到了错误e> 复选框[]Checkbox=GameObject.FindGameObjectWithTag
。如果是这种情况,那么
GameObject.FindGameObjectWithTag
将返回null,正如程序员所说的那样。我想该方法可能仍然返回null-因此需要在代码中进行检查-但是如果局部变量声明不返回null,则会出现问题。是的,它将是一个p在
保存复选框
加载复选框
功能中使用时出现问题。