【问题标题】:How to access lists created in a singleton class from another script in Unity3d and C#如何从 Unity3d 和 C# 中的另一个脚本访问在单例类中创建的列表
【发布时间】:2016-03-29 18:55:31
【问题描述】:

我正在 Unity3d 中开发 RPG。我已成功重构代码以运行 SQL 数据库并转换为单例模式。 gameobject 是在运行时创建的。

在每个表中,我根据其属性脚本创建一个列表;我在那里创建它是因为它访问数据库。另一个脚本附加到顶部面板,我想在其中显示角色的名称和统计信息,但我无法访问列表。

PlayerDatabaseManager PDM; 

void Awake()
{
    PlayerDatabaseManager.Instance.LoadPersonal();
}

// Use this for initialization
void Start () 
{
    PDM.GetComponent<PlayerDatabaseManager>.Personal();
    Personal = PDM.Personal.Name();
}

我很困惑该放什么。个人需要是databasemanager 类型还是personal 类型?

【问题讨论】:

标签: c# list sqlite unity3d


【解决方案1】:

我认为你的结构有点混乱。如果 PlayerDatabaseManager 是一个单例,您不应该从不同的组件调用 LoadPersonal - 它应该在需要时自行处理,以便进行良好封装。

此外,如果PDM 已经是PlayerDatabaseManager 类型,则无需在其上调用GetComponent&lt;PlayerDatabaseManager

我想你想要的是:

1) 在PlayerDatabaseManagerAwake():

Instance = this;

2) 在其他访问信息的类中,例如Personal中的名称

void Start() {
    Name = PlayerDatabaseManager.Instance.Personal.Name()
}

3) 设置 PlayerDatabaseManager 的执行顺序,使其在其他脚本之前运行,或者确保它在第一个场景中加载到任何其他具有脚本的游戏对象将访问它之前。

【讨论】:

  • 非常感谢戴夫!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
相关资源
最近更新 更多