Пример #1
0
    /// <summary>
    /// Restores the state of the game
    /// </summary>
    public void RestoreFromSave(MazeData maze, GameObject localPlayer, ScoreManager score)
    {
        Debug.Log("Restoring game state...");

        // restore enemy states
        for (int i = 0; i < maze.enemies.Count; i++)
        {
            Enemy     enemy     = maze.enemies[i];
            EnemySave enemySave = currentSave.enemies[i];

            enemy.GetComponent <NavMeshAgent>().Warp(enemySave.position);
            enemy.transform.position = enemySave.position;

            if (enemySave.dead)
            {
                enemy.Die();
            }
        }

        // set player position
        localPlayer.transform.position = currentSave.player.position;

        // set score
        score.SetScore(currentSave.score);
    }
Пример #2
0
    /// <summary>
    /// Saves the game's state
    /// </summary>
    public void SaveGameState(MazeData maze, GameObject localPlayer, ScoreManager score)
    {
        if (currentSave == null)
        {
            currentSave = new GameProgress();
        }

        currentSave.oldMaze = true;

        // Save enemies
        currentSave.enemies = new List <EnemySave>();

        for (int i = 0; i < maze.enemies.Count; i++)
        {
            EnemySave enemySave = new EnemySave();

            Enemy enemy = maze.enemies[i];

            enemySave.position = enemy.transform.position;
            enemySave.dead     = enemy.dead;

            currentSave.enemies.Add(enemySave);
        }

        // Save player
        currentSave.player = new EntitySave();

        Vector3 pos = localPlayer.transform.position;

        pos.x = ((int)pos.x / 2) * 2f;
        pos.y = ((int)pos.y / 2) * 2f;
        pos.z = ((int)pos.z / 2) * 2f;

        currentSave.player.position = pos;

        // save score
        currentSave.score = score.currentScore;

        // save seed
        currentSave.mazeSeed = maze.seed;

        // save locally
        string saveString = GameProgressEncoder.Encode(currentSave);

        PlayerPrefs.SetString("Save", saveString);
    }
Пример #3
0
/// <summary>
/// 加载
/// </summary>
    public void Load()
    {
        FileStream save     = File.OpenRead(_saveFilePath + _EnemySaveFileName);
        EnemySave  saveData = JsonUtility.FromJson <EnemySave>(ReadText(save));

        GameObject[] enemys = GameObject.FindGameObjectsWithTag("Enemy");
        if (ReadText(save) != "")
        {
            for (int i = 0; i < enemys.Length; i++)
            {
                enemys[i].transform.position = saveData.Enemyposition[i];
                enemys[i].transform.rotation = saveData.EnemyRotation[i];
                if (enemys[i].GetComponent <Enemy>())
                {
                    enemys[i].GetComponent <Enemy>().Health = saveData.EnemyHealth[i];
                    enemys[i].GetComponent <Enemy>().die    = saveData.EnemyDeadFlag[i];
                }
            }
        }
        save.Close();

        SpawnPlayerAndCarmera();
    }
Пример #4
0
/// <summary>
/// 储存
/// </summary>
    public void Save()
    {
        EnemySave saveDate = new EnemySave();

        //  saveDate.player=PlayerController.Instance.transform;

        // saveDate.playerHealth=PlayerController.Instance.Healeth;
        GameObject[] enemys = GameObject.FindGameObjectsWithTag("Enemy");
        for (int i = 0; i < enemys.Length; i++)
        {
            saveDate.Enemyposition.Add(enemys[i].transform.position);
            saveDate.EnemyRotation.Add(enemys[i].transform.rotation);
            if (enemys[i].GetComponent <Enemy>())
            {
                saveDate.EnemyDeadFlag.Add(false);
                saveDate.EnemyHealth.Add(enemys[i].GetComponent <Enemy>().Health);
            }
            else
            {
                saveDate.EnemyDeadFlag.Add(true);
                saveDate.EnemyHealth.Add(-1);
            }
        }
        FileStream save = File.Create(_saveFilePath + _EnemySaveFileName);

        AddText(save, JsonUtility.ToJson(saveDate));

        save.Close();

        if (player != null && cameras != null)
        {
            playerProperties.position    = player.transform.position;
            playerProperties.roatition   = player.transform.rotation;
            playerProperties.HealthValue = PlayerController.Instance.Healeth;
        }
    }