首页 > 解决方案 > 如何在单独的文件中创建类子类

问题描述

我有一个非常简单的问题,我目前有一个 DB 类,每个集合都有一个子类:

public class DB: MonoBehaviour {
  // List of items
  public static List<DB.User> Users = new List<DB.User>();
  public static List<DB.Foo> Foos = new List<DB.Foo>();

  public static DB instance;

  // Use this for initialization
  void Awake()
  {
      if (DB.instance == null)
      {
        DB.instance = this;
      }
      else
      {
        Destroy(this.gameObject);
      }
  }

  // Defs
  [System.Serializable]
  public class User {
    public string name;
    public User(name) {
      this.name = name;
    }
  }
  [System.Serializable]
  public class Foo {
    public int bar;
    /* ... */ 
  }

  // Method
  public static Add (DB.User user) {
    DB.instance.Users.Add(user);
  }
  public static Add (DB.Foo foo) {
    DB.instance.Foos.Add(foo);
  }
}

但是我可以将有关用户的所有内容移动到 db-user.cs 文件中(并将其保存到数据库中)吗?

示例(不工作):

// Define the User class
[System.Serializable]
public class static DB.User {
    public string name;
    /* ... */ 
} 
// Add a function to DB: 
public static DB.Add (DB.User user) {
  DB.instance.Users.Add(user);
}

标签: c#classunity3d

解决方案


是的,你可以这样做。但是您不表示继承Class.Subclass,而是Subclass : Class这样

[System.Serializable]
public class User : Data {
    ...

public void Add(User user){
    this.users.Add(user);
    }
}

我会从 Data 类中重构用户和 foos 列表。最好创建一个包含所有 Data 对象的 DataFactory 类,尤其是当您将它们用作单例时。

编辑:看起来你已经更新了这个问题。user 和 foo 不需要从您发布的这个新版本的 DB 继承。将静态列表更改为保持,您就可以开始了。


推荐阅读