// смена игрока (при смене происходит удаление текущих данных, для последующей загрузки с учетом нового выбранного игрока) public void change_player_id(int new_player_id) { _current_player_id = new_player_id; DestroyImmediate(gameObject); _save = null; GC.Collect(); }
protected override void Awake() { #if UNITY_EDITOR if (SceneManager.GetActiveScene().name.StartsWith("gb")) { als_save.g().change_player_id(1); } #endif //Screen.sleepTimeout = 60f; base.Awake(); // счетчик FPS if (PlayerPrefs.GetInt("showFPS", 0) == 1) { utils.resource_instantiate("prefab/FPSBack", transform, true); } // загрузка раскладки управления string prefab_path; switch (PlayerPrefs.GetInt("control_layout", 0)) { case 1: prefab_path = "prefab/control_advanced"; break; default: prefab_path = "prefab/control_standart"; break; } var control = utils.resource_instantiate(prefab_path, transform, true); _game_control = control.GetComponent <als_game_control>(); // сохранение _save = als_save.g(); // сохранение последнего сыгранного уровня _current_level_id = utils.current_level_id(); if (_current_level_id >= 0 && _save != null) { _save.last_played_level = _current_level_id; _save.save_data(); } Physics2D.gravity = utils.default_gravity(); }
//static readonly Type[] _const_pawn_type = { typeof(als_gymnast_ctrl), typeof(grabot_ctrl) }; //public Type current_player_type { get { return _const_pawn_type[current_player_id]; } } // ниже функции // данные о сохранении доступны в любой сцене // загружаются при первом вызове global_save public static als_save g() { //PlayerPrefs.DeleteAll(); if (_save == null) { _save = UnityEngine.Object.FindObjectOfType <als_save>(); if (_save == null) { var o = utils.resource_instantiate("prefab/GameSave"); DontDestroyOnLoad(o); _save = o.GetComponent <als_save>(); _save.load_data(); _save.fill(); GC.Collect(); } } return(_save); }