public void Load() { if (!File.Exists(filePath)) { Debug.Log("Нет сохранения"); _gameWorld.Restart(); return; } Save save; try { string json = File.ReadAllText(filePath); save = JsonUtility.FromJson <Save>(json); } catch (Exception ex) { Debug.LogWarning(ex); Debug.LogWarning("сохранения не подходят"); _gameWorld.Restart(); return; } if (save.allCharacters == null || save.nextCharacters == null) { Debug.LogWarning("в файле сохраниения нет данных"); _gameWorld.Restart(); return; } _score.Reset(); _characterProvider.Clear(); _score.Add(save.score); SaveCharacter[] savedCharacters = save.allCharacters; foreach (var item in savedCharacters) { _characterProvider.Create(item.x, item.y, item.prefabIndex); } _gameWorld.SetNextCharacters(save.nextCharacters); if (_characterProvider.GetAllFillPosition().Count == 0) { _gameWorld.RandomSpawn(); } }
public void RandomSpawn() { var combinedCallback = new CombinedEventHandler <Character>(SpawnedCharactersHandler); foreach (var prefabindex in nextPrefabIndexs) { var empty = characterProvider.GetAllEmptyPosition(); var index = UnityEngine.Random.Range(0, empty.Count); var pos = empty[index]; var character = characterProvider.Create(pos.x, pos.y, prefabindex); if (character != null) { combinedCallback.BindCharacter(character); character.OnSpawned += combinedCallback.Callback; } } }