Инициирование словарного вопроса - PullRequest
0 голосов
/ 28 мая 2019

Вместо простой инициализации Screens(Dictionary<GameObject, string> Screens )values , этот код создает новые экраны gameObject с этими связанными значениями.

Проблема здесь: Screens[new GameObject(cont.Key)]= cont.Value; Это результат для экранов: «Экраны создаются заново со связанными значениями RightOuterPad =, LeftOuterPad =, LeftScreen =, RightOuterPad =, OPENPAD1-video-2, LeftOuterPad = OPENPAD1-video-1, LeftScreen = MAINBOARD1-video-2

Содержание словаря = новый словарь ();

content = ReadConfigFile(path);

Dictionary<GameObject, string> Screens = config.Screens;

List<string> ScreensNames = new List<string>();

foreach (var screen in Screens)
{
    ScreensNames.Add(screen.Key.name);
}

foreach (KeyValuePair<string, string> cont in content)
{
    if (ScreensNames.Contains(cont.Key))
    {
        Debug.Log(Screens);
        Screens[new GameObject(cont.Key)]= cont.Value;
    }
}

1 Ответ

2 голосов
/ 28 мая 2019

Похоже, что вы пытаетесь сделать это

using System.Linq;

...

var keyObjectReference = Screens.keys.FirstOrDefault(o => string.Equals(o.name, cont.Key));
config.Screens[keyObjectReference] = cont.Value;

вместо этого извлекает первый GameObject, имя которого совпадает с cont.Key, и вместо этого использует эту ссылку для доступа к правильной записи в словаре config.Screens.

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