Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将游戏对象数组的所有元素输出到unity控制台_C#_Arrays_Unity3d_Nested Loops_Gameobject - Fatal编程技术网

C# 无法将游戏对象数组的所有元素输出到unity控制台

C# 无法将游戏对象数组的所有元素输出到unity控制台,c#,arrays,unity3d,nested-loops,gameobject,C#,Arrays,Unity3d,Nested Loops,Gameobject,我当前无法打印数组的所有元素。我尝试使用嵌套的for循环打印所有元素并对其编号,但我只能反复打印一个元素,这是我在游戏中单击的最后一个元素 打印的前7个元素完全相同,最后一个元素完全空白 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PickUpItem : MonoBehaviour,

我当前无法打印数组的所有元素。我尝试使用嵌套的for循环打印所有元素并对其编号,但我只能反复打印一个元素,这是我在游戏中单击的最后一个元素

打印的前7个元素完全相同,最后一个元素完全空白

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class PickUpItem : MonoBehaviour, IInteractable
{

    public string DisplaySprite;

    public string DisplayImage;

    public int counter;

    public int j;

    public string[] ChoosenItems = new string[7];

    private GameObject InventorySlots;

    public void Interact(DisplayImage currentDisplay)
    {
        ItemPickUp();
    }

    void Start()
    {

    }

    void Update()
    {

    }

    void ItemPickUp()
    {
        InventorySlots = GameObject.Find("Slots");

        counter = 0;

        foreach (Transform slot in InventorySlots.transform)
        {
            if (slot.transform.GetChild(0).GetComponent<Image>().sprite.name == "empty_item")
            {
                slot.transform.GetChild(0).GetComponent<Image>().sprite =
                    Resources.Load<Sprite>("Inventory Items/" + DisplaySprite);
                Destroy(gameObject);
                break;
            }

            if (counter <= 7)
            {
                ChoosenItems[counter] = (gameObject.name);
                counter++;


                if (counter >= 7)
                {
                    Debug.Log("You have choosen 8 itmes, would you like to continue or retry?");

                    for (j = 0; j <= 7; j++)
                    {
                        Debug.LogFormat("Element[{0}] = {1}", j, ChoosenItems[j]);
                    }


                }

            }


        }

    }

}

//http://csharp.net-informations.com/collection/list.html
使用系统;
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类拾取项:单行为,可交互
{
公共字符串显示精灵;
公共字符串显示图像;
公共int计数器;
公共int j;
公共字符串[]ChoosenItems=新字符串[7];
私有游戏对象目录槽;
公共void交互(DisplayImage currentDisplay)
{
项目拾取();
}
void Start()
{
}
无效更新()
{
}
void itempeackup()
{
InventorySlots=GameObject.Find(“插槽”);
计数器=0;
foreach(InventorySlots.Transform中的转换槽)
{
if(slot.transform.GetChild(0.GetComponent().sprite.name==“空项”)
{
slot.transform.GetChild(0.GetComponent().sprite=
加载(“库存项目/”+DisplaySprite);
摧毁(游戏对象);
打破
}
如果(计数器=7)
{
Log(“您选择了8次,是继续还是重试?”);

对于(j=0;j您正在通过
ChoosenItems[6]
,用7个元素
ChoosenItems[0]
声明您的
ChoosenItems=new string[7]
。正如您所看到的,这只是7项。因此,您永远不会有8项。请尝试将其声明为
ChoosenItems=new string[8]
使其包含8项。有关更多信息,请参阅


希望这有帮助!

您正在通过
ChoosenItems[6]
用7个元素
ChoosenItems[0]
声明您的
ChoosenItems=new string[7]
。正如您所看到的,这只是7个项。因此,您永远不会有8个项。请尝试将其声明为
ChoosenItems=new string[8]
使其包含8项。有关更多信息,请参阅


希望这有帮助!

您试过调试代码吗?我试过,当我的计数器低于7时,它会向数组中添加一个项,并向计数器中添加1。然后它会一次又一次地将该项添加到数组中,因为这是它被告知要执行的操作。是否有其他方法可以在不使用for each循环的情况下执行我的函数?从for循环中中断只会执行所有操作ows命令它运行一次,因此我无法将其添加到计数器或其中的数组中。您是否尝试调试代码?当我的计数器低于7时,它会将一个项添加到数组中,并将1添加到计数器中。然后它会一次又一次地将该项添加到数组中,因为这是命令它执行的操作。是否有其他方法可以在不为每个l添加一个值的情况下执行我的函数oop?与for循环的中断只允许它运行一次,因此我无法将其添加到计数器或数组中。