Так я предлагал сохранять список купленных.
Словарь не для сохранения, а для определения нужного префаба при чтении сохраненного списка.
Так я предлагал сохранять список купленных.
Словарь не для сохранения, а для определения нужного префаба при чтении сохраненного списка.
так и как добавлять в список купленные если они изначально не куплены то список пуст и как их туда добавить?
и по алгоритму я должен сделать что когда я нажимаю купить то в словарь добавляется новый префаб и спавнится , но для словаря нужен новый скрипт, верно?
Дык при покупке сохранять всех купленных юнитов в файл.
Потом читать из файла этот список и спавнить.
Словарь это просто замена кучи ифов при чтении элементов списка из файла и спавне
Instantiate(unitTypePrefabDict[name], .........);
вместо
GameObject prefab = null;
if (name == "Soldier")
{
prefab = SoldierPrefab;
}
else if (name == "Wizard")
{
prefab = WizardPrefab;
}
Instantiate(prefab, .........);
не понял что значит.
при покупке сохранять всех купленных юнитов в файл.
и не понял как их сохранить в файл.
Любым удобным способом, гугл знает много их )
По ссылке в этой теме сверху есть классы с атрибутом [Serializable]
https://gitlab.com/AlexP11223/FirstPersonPlatformer/-/blob/master/Assets/FirstPersonPlatformer/Scripts/Serialization/SaveData.cs#L63
Создаются объекты этих классв с данными врагов на сцене (позиция, …)
https://gitlab.com/AlexP11223/FirstPersonPlatformer/-/blob/master/Assets/FirstPersonPlatformer/Scripts/Serialization/Level1SaveHandler.cs#L31
И потом они сохраняются в файл
https://gitlab.com/AlexP11223/FirstPersonPlatformer/-/blob/master/Assets/FirstPersonPlatformer/Scripts/GameManager.cs#L50
https://gitlab.com/AlexP11223/FirstPersonPlatformer/-/blob/master/Assets/FirstPersonPlatformer/Scripts/Serialization/SaveData.cs#L19
С помощью File.WriteAllText
и библиотеки Newtonsoft.Json https://github.com/jilleJr/Newtonsoft.Json-for-Unity
В данном случае данные юнитов видимо надо не со сцены брать, а просто при покупке добавлять объект в список и сохранять список в файл. Список изначально (при загрузке игры/сцены) пустой, либо прочитан из файла если там уже что-то есть.
|Ошибка|CS0103|Имя unitTypePrefabDict не существует в текущем контексте.
void Start()
{
Dictionary<string, GameObject> unitTypePrefabDict = new Dictionary<string, GameObject>
{
{"Units", FirstUnit }
};
}
private void Update()
{
Instantiate(unitTypePrefabDict["Units"], transform.position);
}
}
а понял, спасибо