Unity C # Inheritance получает значение из дочернего класса в родительский класс, затем в дочерний класс - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь получить значение ClicksCounter из FableScript дочернего класса в другой дочерний класс, и я не знаю, как передать это значение.Из того, что я достиг, ClicksCounter читается родительским классом (GameManagerRevamped) успешно, но в BattleSystem дочернем классе кажется, что значения туда не переносятся.

Предполагая, что это мойРодительский класс

public class GameManagerRevamped : MonoBehaviour
{
    public int ClicksCounter;

    public virtual void firstButtonClicked()
    {
        Debug.Log(ClicksCounter);    
    }
}

Мой дочерний класс FableScript

public class FableScript : GameManagerRevamped
{
    public override void firstButtonClicked()
    {
        ClicksCounter += 1;        
        base.firstButtonClicked();
    }
}

А мой третий дочерний класс BattleSystem - это место, где я пытаюсь получить значение ClicksCounter

public class BattleSystem : GameManagerRevamped
{
    public void BattleButton()
    {
        //Output is 0 here
        Debug.Log("Battle Counter is" + ClicksCounter);
    }
}

Моя цель - когда пользователь нажимает кнопку (FableScript), она будет увеличиваться и читаться как BattleSystem.

1 Ответ

0 голосов
/ 23 января 2019

Один из вариантов - сделать счетчик кликов статическим в базовом классе. Это нормально, если он разделяет это свойство между всеми дочерними классами.

class Program
   {
      static void Main(string[] args)
      {
         var childClass1 = new ChildClass1();
         var childClass2 = new ChildClass2();
         childClass1.IncrementCounter();
         childClass2.ConsoleLogCounter();
      }
   }

   public class BaseClass
   {
      public static int counter;
   }

   public class ChildClass1 : BaseClass
   {
      public void IncrementCounter()
      {
         counter++;
      }
   }

   public class ChildClass2 : BaseClass
   {
      public void ConsoleLogCounter()
      {
         Console.WriteLine(counter);
      }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...