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