мне нужно заспавнить объект на другой сцене, как это можно реализовать?
Это как? Одновременно ж только одна сцена может быть загружена.
Если надо, чтоб действия на текущей сцене влияли на то, что потом будет на другой сцене, то надо просто сохранить какое-то нужное состояние (количество убитых врагов, результат диалога, …) в файл и т.п. и использовать его в другой сцене при инициализации.
сохранить через PlayerPrefs?
Например да.
А как можно сохранить функции? Типа void
А для чего это?)
ну например я в магазине хочу купить союзного юнита и сохранить
void SpawnUnit()
{
Instantiate(Unit, transform.position, target.position, Quaternion.identy)
}
чтоб при запуске спавнился юнит если он куплен
Так можно просто сохранить данные о юнитах, и потом спавнить используя их.
Список явно проще сохранить, чем функцию )
Только PlayerPrefs вряд ли удобно для такого, лучше в JSON и т.п. самому сохранять.
Проблема с сохраненим PlayerPrefs - #2 от пользователя AlexP
Дайте плиз код как сделать checkpoint в 2D игре на unity - #2 от пользователя AlexP
Префаб по имени можно заспавнить например либо как-то так с помощью ресурсов, либо просто кинуть все нужные префабы в поля спавняшего скрипта и создать Dictionary имя => префаб.
Я вроде слышал что JSON работает только для пк игр. Так ли это?
долго ломал голову но так и не понял как это сделать через словари, даже примерно не понял
Dictionary<string, GameObject> unitTypePrefabDict = new Dictionary<string, GameObject>
{
{"Soldier", SoldierPrefab},
{"Wizard", WizardPrefab}
};
Instantiate(unitTypePrefabDict["Soldier"], .........);
а что значит
{"Soldier", SoldierPrefab},
{"Wizard", WizardPrefab}
Ключи и значения, по ссылке ж был пример внизу.
В данном случае связь имени (типа) юнита с префабом, который нужно создать.
Ну то есть в файл записать одно из этих названий, и по нему определить какой префаб нужен.
Вместо таких названий может быть удобнее использовать что-нибудь типа unit.GetType().Name
то-есть SoliderPrefab это название префаба который мы создали в Unity?
Это поле/переменная, куда он кинут.
то-есть нужно создать переменную GameObject с названием SoliderPrefab и туда впихнуть префаб?
Да.
а через PlayerPrefs можно сохранить словарь?
и кстати нужна же ещё проверка на то куплен юнит или нет перед спавном