Unity C#-如何做到这一点,以便可以通过一个类访问所有其他类,变量和方法?

时间:2019-01-11 18:08:54

标签: c# class unity3d

因此,我编写了一堆类,以便可以在不同项目中重复使用它们。

要整理一些东西,使其更易于访问并避免冲突,我一直试图将它们全部归为一类。

例如,如果我有这三个课程

public class Head
{
   public string eye_color = "blue";
   public string hair_color = "black";

   public void nod()
   {
      //some code to nod
   }
}

public class Body
{
   public string type = "athletic";
}

public class Hands
{
   public int fingers = 10;
}

我想将它们全都放在Person类中,以便可以使用类似的东西来调用/访问这些类中的所有内容

private Person person = new Person(); 
Debug.Log(person.body.type);
person.head.nod();

所以目前我正在采用的方法是设置像这样的人员类

public class Person
{
   public Head head = new Head();
   public Body body = new Body();
   public Hands hands = new Hands();
}

格式为MainClassInstance.SomeOtherClassReferencedInTheMainClassInstance.SomeMethodOrVariable-我需要全部通过第一个MainClass进行访问。

在大多数情况下,这似乎可行。但是,我遇到了一些与Monobehaviour类以及静态变量有关的问题。这些不能通过实例访问。

如何处理这些问题,以便我可以继续以相同的方式调用/访问所有内容(如上所述)?

在此先感谢您的启发:-)

1 个答案:

答案 0 :(得分:-1)

如果这纯粹是为了解决与冲突和重复使用的变量名等有关的问题。我认为您真正想要的是名称空间,而不是使用一个空类,该空类只是无缘无故地持有许多其他类。但是我可能是错的,您是否总是希望将一组类一起实例化?您是否由于某种相互依赖性而要求每次都同时实例化一个头部和双手?还是它们实际上都是分离的,彼此之间没有直接的依存关系?在后一种情况下,最好将它们一起存储在名称空间中,而不是存储在类中。

对于您的主要问题,通过执行以下操作来访问实例上的静态变量:

public class Head
{
    public static int eyeCount;
    public int eyelashCount;

    public GrowEyeLash()
    {
        eyelashCount++; //accessing a normal variable
    }

    public SetEyeCount(int eyes)
    {
        Head.eyeCount = eyes; //accessing a static variable
    }
}

当您要访问静态变量时,请使用类而不是实例,因为静态变量与类型本身(而不是任何特定实例)相关联。本质上,静态变量仅存在于代码中的一个位置,并且适用于 all 实例。