如何在for循环外声明Var?

How to declare Var outside of for loop?

我有一个包含两个 for loopselse 块。

在第二个 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 循环内并且不为空。

我也在尝试将标签用于 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";
        }
    }

var 是为 compile-time type-binding 引入的匿名类型,但我们可以将 var 用于设计时已知的原始类型和自定义类型。在运行时,没有像 var 这样的东西,它被替换为引用类型或值类型的实际类型。

参考文献: