创建出第一人称控制器后,想要做储存功能时记得要在控制器下添加Player Saver脚本。
然后在GameController下添加Save Components Helper脚本,并且在脚本下点击Add添加武器。
GameController还需要添加自己写的脚本GameManager;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
public Texture2D cursorTexture;
public bool isLock = true;
public static GameManager _instance;
//胜利UI
public GameObject WinUI;
public List<uzAI.uzAIZombieStateManager> BossList;
public AudioSource BackGroundMusie;
//星星数组
public GameObject[] stars;
//任务数
public int missionFinish;
//杀敌数
public Text winKill;
public int kill;
public Text SceneKill;
//金币
public Text winGold;
public int gold;
public Text SceneGold;
//是否结束
public bool GameOver;
//当场星星数
private int starsNum = 0;
//总关卡
private int totalNum = 9;
//帮助菜单
public GameObject HelpPanel;
private void Awake()
{
_instance = this;
kill = 0;
gold = 0;
//Cursor.visible = false;
}
// Start is called before the first frame update
void Start()
{
Time.timeScale = 1;
//Cursor.visible = false;
//starsNum= PlayerPrefs.GetInt(PlayerPrefs.GetString("nowLevel"));
}
// Update is called once per frame
void Update()
{
//鼠标显示
MouseCursor();
//清除目标
//ClearTarget();
//如果Boss集合里没有Boss就赢了
if (BossList.Count == 0)
{
//Debug.Log("空了");
//Win();
}
Help();
}
public void Help()
{
if (Input.GetKeyDown(KeyCode.H))
{
HelpPanel.SetActive(true);
}else if (Input.GetKeyUp(KeyCode.H))
{
HelpPanel.SetActive(false);
}
}
//鼠标显示隐藏
public void MouseCursor()
{
if (isLock)
{
//鼠标限定在 game Window
Cursor.lockState = CursorLockMode.Confined;
Cursor.lockState = CursorLockMode.Locked;
}
else
{
Cursor.lockState = CursorLockMode.None;
}
//设置鼠标样式
//Cursor.SetCursor(cursorTexture, Vector2.zero, CursorMode.Auto);
//鼠标是否显示
//Cursor.visible = isMouse;
if (Input.GetKeyDown(KeyCode.M))
{
isLock = true;
}
if (Input.GetKeyDown(KeyCode.K))
{
isLock = false;
}
}
public void Win()
{
//任务完成统计
ReadStarts();
//显示胜利UI
WinUI.SetActive(true);
//显示星星
ShowStars();
//显示得分和金币
winKill.text = kill.ToString();
winGold.text = gold.ToString();
//加钱
AddGold();
//停止音乐和显示鼠标
BackGroundMusie.Stop();
isLock = false;
GameOver = true;
}
//增加整体金钱
public void AddGold()
{
if (!GameOver)
{
PlayerPrefs.SetInt("InGameCurrency", PlayerPrefs.GetInt("InGameCurrency") + gold);
}
}
//读取星星
public void ReadStarts()
{
//如果老大被消灭了
if (BossList.Count == 0 && !GameOver)
{
//任务完成加一
missionFinish++;
}
}
//删除以消灭的目标
public void ClearTarget()
{
for (int i = 0; i < BossList.Count; i++)
{
print("1");
if (BossList[i] == null)
{
print("2");
BossList.Remove(BossList[i]);
i--;
}
}
}
//加分
public void Add(int GoldBack)
{
kill++;
print(GoldBack);
gold += GoldBack;
SceneKill.text = kill.ToString();
SceneGold.text = gold.ToString();
}
public void Restart()
{
//重新加载当前场景
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
public void BackToMain()
{
SceneManager.LoadScene("Main Menu");
}
public void mission()
{
missionFinish++;
}
//显示星星
public void ShowStars()
{
StartCoroutine(Show());
}
//携程显示星星
IEnumerator Show()
{
//计算完成的任务获得的星星
for (; starsNum < missionFinish; starsNum++)
{
yield return new WaitForSeconds(0.3f);
print(" 赢了");
stars[starsNum].SetActive(true);
}
for (; starsNum < missionFinish; starsNum++)
{
yield return new WaitForSeconds(0.3f);
print(" 赢了");
stars[starsNum].SetActive(true);
}
print(starsNum);
SaveData();
Time.timeScale = 0;
}
//储存数据
public void SaveData()
{
//如果要储存的星星比之前大的才储存下来
if (starsNum >= PlayerPrefs.GetInt(PlayerPrefs.GetString("nowLevel")))
{
PlayerPrefs.SetInt(PlayerPrefs.GetString("nowLevel"), starsNum);
}
Sum();
}
public void Sum()
{
//星星总和
int sum = 0;
for (int i = 0; i < totalNum; i++)
{
sum += PlayerPrefs.GetInt(i.ToString());
}
PlayerPrefs.SetInt("totalNum", sum);
}
}