C # new () распределение возвращает ноль или "0" - PullRequest
0 голосов
/ 15 мая 2019

У меня есть статическая переменная, объявленная в другом классе.Этот класс объявляет это:

public class BaseClass : MonoBehaviour
{ 
   // Static so should only allocate once
   public static SubClass m_subObj  = new SubClass();
}

Я попытался выделить выделение в «замке (объекте)», но m_subObj всегда равен нулю.Я включил некоторый код, который показывает разблокированную версию.

Вот код, который стоит на нем:

public class BaseClass : MonoBehaviour
{ 
   // Static so should only allocate once
   public static SubClass m_subObj  = new SubClass();  
}

public class SubClass : BaseClass 
{

   void Start() 
   {
       if (m_subObj)
       {
         Debug.Log("SubClass:Start 1 - SubClass allocated");
         return;
       }

      // This will pass
      if (!m_subObj)
      {
         Debug.Log("SubClass:Start() 2 - Huh? Should be allocated");
         m_subObj = new SubClass();
      }

      // This will pass too
      if (!m_subObj)
      {
       Debug.Log("SubClass:Start() 3 - DOUBLE Huh? Should be allocated");
      }
}

Я ожидал:

(Запустите его) Подкласс: Старт 1 - статический выделенный Подкласс

Но получил:

(Запустите его) Подкласс: Старт () 2 - А?Должны быть выделены?Подкласс: Start () 3 - DOUBLE, а?Должно быть выделено

1 Ответ

0 голосов
/ 19 мая 2019

По какой-то причине он не понравился new () для объектов.Хотя AddComponent () работает.Что-то делать с изменением статических классов на отдельные экземпляры.

Foo=gameObject.AddComponent<Bar>() as Bar;

Спасибо всем за помощь.Ура, Клэнси

...