如何在for循环外声明Var?

时间:2019-07-08 09:58:20

标签: c# unity3d null instance

我有一个else块,其中包含两个for loops

在第二个for循环中,我试图从干净的状态创建一组objectYouCreate实例,就像先前创建了一组实例一样,它已经通过第一个for循环成功销毁了。因此,每次运行此代码(在Update方法中),它都会在擦除前一组实例后创建一个全新的实例集。

这是我想出的(可能有缺陷的)逻辑,但是我遇到了这个错误:

错误:"Cannot assign <null> to implicitly typed variable"

我能否获得有关如何以逻辑方式最佳地重组此代码且没有错误的帮助。谢谢。

  else{
        var objectYouCreate = null; //gives the error
        for (int i = 0; i < mesh.vertexCount; i++)
        {
            Destroy(objectYouCreate);
        }
        for (int i = 0; i < mesh.vertexCount; i++)
        {
            Vector3 position = mesh.vertices[i];                
            objectYouCreate = Instantiate(CubePrefab, position, transform.rotation);
        }
     }

__

编辑:

通过在代码中引入标签的用法...我能够更改代码,以便唯一的var声明发生在单个for循环内,并且不为null。

我还在尝试将标签用于Destroy部分,以便它不仅聚焦于同一对象,而且在实例化时聚焦具有给定标签的所有对象。但是这个新代码使Unity崩溃了!如果有人有优化建议或其他方法,请告诉我。

    else
    {
        while (GameObject.FindWithTag("CubePFInst") != null) Destroy(GameObject.FindWithTag("CubePFInst"));

        for (int i = 0; i < mesh.vertexCount; i++)
        {
            Vector3 position = mesh.vertices[i];                
            var cubeClone = Instantiate(CubePrefab, position, transform.rotation);
            cubeClone.tag = "CubePFInst";
        }
    }

1 个答案:

答案 0 :(得分:-1)

var是为匿名类型的编译时类型绑定引入的,但是我们可以将var用于设计时已经知道的原始类型和自定义类型。在运行时,没有像var那样的东西,它被实际类型(引用类型或值类型)代替。

参考文献: