【问题标题】:How to use a local object before it is declared?如何在声明之前使用本地对象?
【发布时间】:2019-03-27 03:18:54
【问题描述】:

我正在做一个 if 语句,我正在尝试检查一个游戏对象是否存在,如果它确实存在,我想销毁它然后重新创建它。 如果它不存在,我想创建它。

我得到错误在未声明之前不能使用局部变量。 我之前尝试过声明它,但后来它说不能使用封闭的本地范围。

如何在声明或作用域之前使用变量?

这是我的代码。

if (x > 25)
        {
            if (newGameObject.scene.IsValid())
            {
                Destroy(newGameObject);
                GameObject newGameObject = GameObject.Instantiate(object1);
            }
            else
            {
                GameObject newGameObject = GameObject.Instantiate(object1);
            }
        }

【问题讨论】:

    标签: c# unity3d local instantiation gameobject


    【解决方案1】:

    先全局声明。

    GameObject obj;
    

    然后你可以在一个方法上初始化它。

    public void try()
    {
        obj = new GameObject();
    } 
    

    【讨论】:

      【解决方案2】:

      如果已经存在一个名为“newGameObject”的新变量,则不能创建它。

      所以 TerribleDog 的建议是您在类级别声明该属性。

      class YourClass: MonoBehaviour 
      {
          GameObject newGameObject
          void SomeMethod 
          {
              Destroy(newGameObject);
              //Then here just set the class level property
              newGameObject = GameObject.Instantiate(object1);
          }
      }
      

      【讨论】:

      • 改成GameObject newGameObject = null;google.com/search?q=use+of+unssigned+variable
      • 也将newGameObject.scene.IsValid() 更改为newGameObject != null && newGameObject.scene.IsValid()
      • 我试过 newGameObject != null && newGameObject.scene.IsValid() 有效,但它不会破坏对象,它们会保留在屏幕上。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多