Вместо того, чтобы просто инициализировать
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
Dictionary<string, string> content = new Dictionary<string, string>();
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;
}
}
@PeterSmith вместо того, чтобы инициализировать значения словаря, создает его снова, связывая нужные значения
Хорошо, но в чем проблема?
Это результат для экранов: «Экраны создаются снова со связанными значениями. -video-1 RightScreen=MAINBOARD2-video-2
Не могли бы вы включить приведенный выше комментарий в свой вопрос и сказать, что вы ожидаете. Спасибо
Похоже, то, что вы пытаетесь сделать,
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
.
Какую ошибку вы получаете?