Unity C#继承从子类到父类然后再到子类获取值

时间:2019-01-23 14:16:15

标签: c# unity3d

我正在尝试从const { block } = require('./block.js') block('Your exiting message!') // your other js code after here // ... 子类的值中获取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读取。

1 个答案:

答案 0 :(得分:0)

一种选择是使点击计数器在基类中变为静态。如果可以,可以在所有子类之间共享该属性。

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);
      }
   }