【问题标题】:Script doesn't find class variable [closed]脚本找不到类变量[关闭]
【发布时间】:2022-01-18 16:54:02
【问题描述】:

我在我的班级中创建了一个带有变量列表的班级

    public class Achievement : MonoBehaviour
{
    public static Achievement AchievementSystem;

    [System.Serializable]
    public class AchievementList
    {
    public Image icon;
    public string display;
    public string description;
    public string ID;
    public bool achieved;
    }

为此,我在当前班级中创建了一个变量:

[SerializeField]
public AchievementList[] achievementsList;

在我的函数中,我想获得布尔变量“已实现”并检查其是否为真:

public void Notification(string ID, bool achieved)
{
    Achievement achievements = achievementsList.FirstOrDefault(x => x.ID == ID);

    if (achievements.achieved == achieved) {
        checkachieved = true;
    }

这就是我的问题。我收到错误消息“成就不包含归档的定义”,这听起来像是 Unity 在我的列表中找不到变量,即使我创建了一个并且应该可以轻松访问。

【问题讨论】:

  • Achievement 不会... AchievementList
  • 为什么AchievementList 有一个achieved 字段?您可以不取得任何成就,也可以取得全部成就,您不能只取得一些成就吗?

标签: c# arrays list class unity3d


【解决方案1】:

您正在尝试调用class Achievement 的变量bool achieved。 但是bool achievedclass AchievementList 的成员。 使用AchievementList 而不是Achievement

public void Notification(string ID, bool achieved)
{
    AchievementList achievements = achievementsList.FirstOrDefault(x => x.ID == ID);

    if (achievements.achieved == achieved) {
        checkachieved = true;
    }}

您应该重命名您的类以阐明其用法。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    相关资源
    最近更新 更多