1max1 писал(а):if (текущая сцена != предыдущей сцене) count++;
if (count == 10) Destroy(gameObject);
Ну или в коде загрузке сцены увеличивать count, чтобы не парится с old/current значениями.
Anonymyx писал(а):Сделай отдельный скрипт для спрайта, который будет иметь int sceneReloads и метод который будет увеличивать это значение и проверять не больше ли оно 10. Этот метод подпиши на событие SceneManager.sceneLoaded.
UPD. А, т.е. уровней много, можно разные загружать\перезагружать но спрайты должны оставаться, так?
Стоп. Как мне найти через другой скрипт все объекты, которые существуют ( спрайты ) и раздать всем по sceneReloads++ перед Application.LoadLevel("RestartUroven'");? Вот допустим, что я пихнул в префаб скрипт с переменной int sceneReloads. Первая проблема - как понять, что настал момент начисления? Вторая - можно ли как-то проверять sceneReloads не через Update? (Если это не будет нагружать как-то заметно устройство, то можно и через Update)
Anonymyx писал(а):Ну ладно, если хотите этим путем...Синтаксис:Используется csharp{
[SerializeField] int maxSceneLoads = 10;
int sceneReloads;
int nativeSceneIndex;
bool isDestroyed;
void Awake()
{
DontDestroyOnLoad(gameObject);
SceneManager.sceneLoaded += OnSceneLoad;
sceneIndex = SceneManager.GetActiveScene().buildIndex;
}
void OnSceneLoad(Scene scene, LoadSceneMode loadSceneMode)
{
if (isDestroyed)
return;
if (scene.buildIndex == nativeSceneIndex)
{
sceneReloads++;
if (sceneReloads > maxSceneLoads)
{
Destroy(gameObject);
isDestroyed = true;
}
gameObject.SetActive(true);
}
else
gameObject.SetActive(false);
}
}
Ну как-то так.
Создаете такой скрипт, и вещаете на спрайт. MaxSceneLoads - кол-во 'выдерживаемых' сцен.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16