在C#for unity的游戏对象列表中遇到问题

在C#for unity的游戏对象列表中遇到问题,c#,visual-studio,unity3d,scripting,C#,Visual Studio,Unity3d,Scripting,我正在进行一个相对简单的脚本编写练习,但我对Unity脚本编写还不熟悉,并且已经在这方面停留了太久 基本上,我正在研究的参数如下: 实例化一个立方体,将每一帧预设到场景中 多维数据集需要根据生成顺序命名为“Cube1”、“Cube2” 立方体需要在距离原点[0,0,0]1个单位内的随机位置生成 每个立方体应具有随机颜色 立方体大小(localScale)在每个帧中收缩10% 当立方体的比例小于其原始比例的10%时,立方体将被销毁 我被第二部分难住了。我可以创建无限多的多维数据集对象,但每次创建一

我正在进行一个相对简单的脚本编写练习,但我对Unity脚本编写还不熟悉,并且已经在这方面停留了太久

基本上,我正在研究的参数如下:

  • 实例化一个立方体,将每一帧预设到场景中
  • 多维数据集需要根据生成顺序命名为“Cube1”、“Cube2”
  • 立方体需要在距离原点[0,0,0]1个单位内的随机位置生成
  • 每个立方体应具有随机颜色
  • 立方体大小(localScale)在每个帧中收缩10%
  • 当立方体的比例小于其原始比例的10%时,立方体将被销毁
  • 我被第二部分难住了。我可以创建无限多的多维数据集对象,但每次创建一个新的多维数据集时,我试图在列表中命名它们,结果却只能显示为“多维数据集”

    此外,我不知道如何将列表中的每个立方体作为目标,使它们都缩小然后消失。因此,目前的情况是,这只会在距离原点1个单位的范围内生成大小和颜色都随机的立方体,但这些立方体一旦被创建,就不会有任何作用

    到目前为止,我的代码是:

    using JetBrains.Annotations;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CubeCreator : MonoBehaviour
    {
        Vector3 origin;
        private List<GameObject> cubeList;
        public float targetScale = 0.1f;
        public float shrinkSpeed = 0.1f;
    // Start is called before the first frame update
    
    
    
    
    private void Awake()
    {
        cubeList = new List<GameObject>();
    }
    
    void Start()
    {
        origin = new Vector3(0, 0, 0);
    
    }
    
    // Update is called once per frame
    void Update()
    {
        AddNewCube();
       
        // RemoveCube(cubeList[i]);
        //i++;
    
    
    }
    
    private void SetRandCubeState(GameObject cube)
    {
    
        float randScale = Random.Range(0.8f, 1.0f);
        Vector3 randomScaler = new Vector3(randScale, randScale, randScale);
        cube.transform.localScale = randomScaler;
        Vector3 randomPosition = new Vector3(Random.Range(origin.x - 1.0f, origin.x + 1.0f), Random.Range(origin.y - 1.0f, origin.y + 1.0f), Random.Range(-1.0f,1.0f));
        cube.transform.localPosition = randomPosition;
        Renderer render = cube.GetComponent<Renderer>();
        render.material.SetColor("_Color", Random.ColorHSV());
    
    }
    
    private void AddNewCube()
    {
        GameObject newCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        cubeList.Add(newCube);
        SetRandCubeState(newCube);
        for (int i = 0; i == cubeList.Count; i++)
        {
            cubeList[i].name = "cube" + i;
            cubeList[i].transform.localScale = Vector3.Lerp(cubeList[i].transform.localScale, new Vector3(targetScale, targetScale, targetScale), Time.deltaTime * shrinkSpeed);
            print("i is equal to " + i);
        }
    
    
    }
    
    private void RemoveCube(GameObject oldCube)
    {
        Destroy(oldCube);
    
    }
    
    使用JetBrains.annotation;
    使用系统集合;
    使用System.Collections.Generic;
    使用UnityEngine;
    公共类CubeCreator:单行为
    {
    矢量3原点;
    私人名单立方主义者;
    公共浮动目标标度=0.1f;
    公共浮动收缩速度=0.1f;
    //在第一帧更新之前调用Start
    私人空间
    {
    cubeList=新列表();
    }
    void Start()
    {
    原点=新矢量3(0,0,0);
    }
    //每帧调用一次更新
    无效更新()
    {
    AddNewCube();
    //RemoveCube(立方体列表[i]);
    //i++;
    }
    私有void SetRandCubeState(游戏对象立方体)
    {
    浮动随机标度=随机范围(0.8f,1.0f);
    Vector3 randomScaler=新的Vector3(随机标度,随机标度,随机标度);
    cube.transform.localScale=randomScaler;
    Vector3 randomPosition=新的Vector3(Random.Range(origin.x-1.0f,origin.x+1.0f),Random.Range(origin.y-1.0f,origin.y+1.0f),Random.Range(-1.0f,1.0f));
    cube.transform.localPosition=随机位置;
    渲染器render=cube.GetComponent();
    render.material.SetColor(“_Color”,Random.ColorHSV());
    }
    私有void AddNewCube()
    {
    GameObject newCube=GameObject.CreatePrimitive(PrimitiveType.Cube);
    cubeList.Add(newCube);
    SetRandCubeState(newCube);
    for(int i=0;i==cubeList.Count;i++)
    {
    立方体列表[i].name=“cube”+i;
    cubeList[i].transform.localScale=Vector3.Lerp(cubeList[i].transform.localScale,新向量3(targetScale,targetScale,targetScale),Time.deltaTime*shrinkSpeed);
    打印(“i等于”+i);
    }
    }
    私有void RemoveCube(游戏对象oldCube)
    {
    销毁(oldCube);
    }
    

    }有一个错误,你把它放在==上,这样它就不会被执行

    for (int i = 0; i < cubeList.Count; i++)
        {
            cubeList[i].name = "cube" + i;
            cubeList[i].transform.localScale = Vector3.Lerp(cubeList[i].transform.localScale, new Vector3(targetScale, targetScale, targetScale), Time.deltaTime * shrinkSpeed);
            print("i is equal to " + i);
        }
    
    for(int i=0;i
    销毁多维数据集时,请确保首先从列表中删除。在销毁多维数据集后运行for循环时,if not将引发和异常