Невозможно получить доступ к нестатическому члену внешнего типа - PullRequest
0 голосов
/ 13 мая 2018
public class ScoreManager : MonoBehaviour
{
    public Text recordd;
    string filePath;
    string jsonString;

    [System.Serializable]
    public class Personaje
    {
        public string nombre;
        public string profesion;
        public int nivel;

        public override string ToString ()
        {                           
            return string.Format ("{0}: {1} nivel {2}", nombre, profesion, nivel);
        }
    }

    [System.Serializable]
    public class ListaPersonajes
    {
        public List<Personaje> personajes;

        public void Listar () {
            //loop cada objeto lista
            foreach (Personaje personaje in personajes) {
                Debug.Log(personaje);
                Debug.Log(personaje.nombre);

                recordd.text = "" + personaje; //// THIS LINE ERROR WHY??
            }
        }
    }
}

Ошибка:

Ошибка CS0038: невозможно получить доступ к нестатическому члену внешнего типа «ScoreManager» через вложенный тип «ScoreManager.ListaPersonajes»

1 Ответ

0 голосов
/ 13 мая 2018

Вы пытаетесь получить доступ к полю записи в родительском классе. Поле не помечено как статическое (и вы, вероятно, не хотите, чтобы оно было статическим), и поэтому доступ является недопустимым. Вам нужен экземпляр ScoreManager для доступа к redordd


Edit:

public class Program
{
    public static void Main()
    {
        ScoreManager scoreManager = InitializeMonoBehaviour(); // This is what you need to figure out, how to properly init the object.
        List<Personaje> personajes = new List<Personaje>();
        /*
            fill personajes 
        */
        foreach (Personaje personaje in personajes)
        {
            Debug.Log(personaje);
            Debug.Log(personaje.nombre);

            scoreManager.AppendText(personaje.ToString());
        }
    }
}

public class ScoreManager : MonoBehaviour
{
    public Text recordd;
    string filePath;
    string jsonString;

    publlic void AppendText(string text)    
    {
        this.recordd.text += text;
    }
}

[System.Serializable]
public class Personaje
{
    public string nombre;
    public string profesion;
    public int nivel;

    public override string ToString ()
    {                           
        return string.Format ("{0}: {1} nivel {2}", nombre, profesion, nivel);
    }
}

Я удалил ListaPersonajes класс (в настоящее время я не вижу причины для этого) и добавил AppendText (текст строки) метод к ScoreManager класс. После того, как вы инициализируете класс, вы можете перебирать список и добавлять текст. Я также заменил синтаксис "" + personaje на вызов ToString ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...