繁体   English   中英

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

[英]Unity c# - How can I make it so that I can access all my other classes, variables and methods via a single class?

所以我有一堆用某种方式编写的类,以便可以在不同项目中重复使用它们。

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

例如,如果我有这三个班级

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类以及静态变量有关的问题。 这些不能通过实例访问。

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

预先感谢您的任何启发:-)

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM