C # Unity3D инициализирует список <T>при объявлении инициализирует только два элемента, когда их четыре? - PullRequest
0 голосов
/ 21 октября 2018

Инициализация четырех элементов в списке следующим образом, НО он только инициализирует первые два элемента ... Я действительно не вижу, что с этим не так?

public List<SceneStore> lcRecordList = new List<SceneStore>
{
    new SceneStore { description ="Jill ", ID = 1, visited = false },
    new SceneStore { description = "Jack", ID = 2, visited = false},
    new SceneStore { description = "Joe", ID = 3, visited = false},
    new SceneStore { description = "Jenny", ID = 4, visited = false}
};
void NetTest()
{
    NetworkService lcMyNetworkService = new NetworkService();

    lcMyNetworkService.PutJsonList <SceneStore>(lcRecordList, "https://NewSimland.com/~todd/JSON", ReceiveAListOfRecords);
}

Сделал снимок экрана

local variable lcRecordList

Это просто добавляет четыре элемента:

public List<SceneStore> lcRecordList;
void NetTest()
{
    NetworkService lcMyNetworkService = new NetworkService();
    lcRecordList = new List<SceneStore>
    {
        new SceneStore { description ="Jill ", ID = 1, visited = false },
        new SceneStore { description = "Jack", ID = 2, visited = false},
        new SceneStore { description = "Joe", ID = 3, visited = false},
        new SceneStore { description = "Jenny", ID = 4, visited = false}
    };
    lcMyNetworkService.PutJsonList <SceneStore>(lcRecordList, "https://NewSimland.com/~todd/JSON", ReceiveAListOfRecords);
}

Так почему инициализация lcRecordList в объявлении ограничена первыми двумя?

Сделал еще один скриншот значения локальной переменной:

Initialization in the method initialized all four items

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Как указали CaTS и Мо Наримани, среда UNITY3D инициализирует значения на основе первой инициализации списка, потому что в MonoBehaviour обнаружен атрибут класса Public (переменная).Это переопределяло инициализацию в скрипте после того, как в код скрипта было добавлено больше элементов.

Так что ответ «обновить», нажав «Сбросить» в Инспекторе после добавления дополнительных элементов, при изменении инициализации в объявлении, это работает !!

Смотрите скриншот здесь:

Палки Unity3D с первой инициализацией?

0 голосов
/ 21 октября 2018

попробуйте вместо этого:

   public List<SceneStore> lcRecordList = new List<SceneStore>
    {
      SceneStore store;
      store=  new SceneStore { description ="Jill ", ID = 1, visited = false },
      lcRecordLisr.Add(store);

        store=   new SceneStore { description = "Jack", ID = 2, visited = false},
        lcRecordLisr.Add(store);

        store=   new SceneStore { description = "Joe", ID = 3, visited = false},
        lcRecordLisr.Add(store);

       store=    new SceneStore { description = "Jenny", ID = 4, visited = false}
        lcRecordLisr.Add(store);

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