using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; //主菜单及设置 public class MainMenu : MonoBehaviour { //第一次打开游戏? private bool isFirstOpenGame; //游戏设置菜单获取 public bool[] gameSetting_; public Button[] gameSetting_LeftBtn; public Button[] gameSetting_RightBtn; public Text[] gameSetting_Text; //开始两种游戏模式 public void startGhostMode() { SceneManager.LoadScene(1); } public void startOutsideMode() { SceneManager.LoadScene(2); } //退出游戏 public void exitGame() { Application.Quit(); } //主菜单设定初始化 private void Start() { if (SaveSystem.HasKey("isFirstOpenGame")) { loadingSettingAll(); } else { isFirstOpenGame = true; SaveSystem.SetBool("isFirstOpenGame", isFirstOpenGame); /**************************************/ changeAllQualityEffect(); changeTextureQualityEffect(); changeShadowQualityEffect(); changeAntiAliasingQualityEffect(); changeAnisotropicEffect(); changeVSyncEffect(); /********************************************/ } } //游戏设置保存 public void gameSettingSave() { for (int i = 0;i<11;i++) { SaveSystem.SetBool("gameSetting"+i, gameSetting_[i]); } } //游戏设置读取 public void gameSettingLoad() { for (int i = 0; i < 11; i++) { gameSetting_[i] = SaveSystem.GetBool("gameSetting" + i); if (gameSetting_[i]) { gameSetting_LeftBtn[i].interactable = true; gameSetting_RightBtn[i].interactable = false; gameSetting_Text[i].text = "显示"; if (i>=6) { gameSetting_Text[i].text = "开"; } } else { gameSetting_LeftBtn[i].interactable = false; gameSetting_RightBtn[i].interactable = true; gameSetting_Text[i].text = "不显示"; if (i >= 8) { gameSetting_Text[i].text = "关"; } } } } //布尔类型的设置按钮点击事件 public void settingButtonClickBool(int gameSettingId) { float gameSettingNo = gameSettingId / 2f; if (Mathf.Abs(gameSettingId / 2) != gameSettingNo) { gameSetting_[(gameSettingId-1)/2] = false; } else { gameSetting_[gameSettingId/2] = true; } } //布尔类型的设置按钮加载事件 public void loadingButtonClickBool() { } //画质调整方法 //1.1总画质 private int qualityLevel_ = 4; public Button allQualitySettingLeft_; public Button allQualitySettingRight_; public Text allQualitySettingText_; public void setAllQuality(bool isleft) { if (isleft && qualityLevel_>1) { qualityLevel_ -= 1; } else if(!isleft && qualityLevel_ < 5) { qualityLevel_ += 1; } changeAllQualityEffect(); } private void changeAllQualityEffect(){ QualitySettings.SetQualityLevel(qualityLevel_); if (qualityLevel_ == 1) { allQualitySettingLeft_.interactable = false; }else { allQualitySettingLeft_.interactable = true; } if (qualityLevel_ == 5) { allQualitySettingRight_.interactable = false; }else { allQualitySettingRight_.interactable = true; } switch (qualityLevel_) { case 1: allQualitySettingText_.text = "低"; break; case 2: allQualitySettingText_.text = "中等"; break; case 3: allQualitySettingText_.text = "高"; break; case 4: allQualitySettingText_.text = "极高"; break; case 5: allQualitySettingText_.text = "完美"; break; } } //1.2全局雾效/泛光/SSAO参照上述游戏设置 //1.3贴图质量 private int textureQualityLevel_ = 0; public Button textureQualitySettingLeft_; public Button textureQualitySettingRight_; public Text textureQualitySettingText_; public void setTextureQuality(bool isleft) { if (isleft && textureQualityLevel_ < 3) { textureQualityLevel_ += 1; } else if (!isleft && textureQualityLevel_ > 0) { textureQualityLevel_ -= 1; } changeTextureQualityEffect(); } private void changeTextureQualityEffect() { QualitySettings.masterTextureLimit = textureQualityLevel_; if (textureQualityLevel_ == 0) { textureQualitySettingRight_.interactable = false; } else { textureQualitySettingRight_.interactable = true; } if (textureQualityLevel_ == 3) { textureQualitySettingLeft_.interactable = false; } else { textureQualitySettingLeft_.interactable = true; } switch (textureQualityLevel_) { case 0: textureQualitySettingText_.text = "完美"; break; case 1: textureQualitySettingText_.text = "一般"; break; case 2: textureQualitySettingText_.text = "较差"; break; case 3: textureQualitySettingText_.text = "差"; break; } } //1.4阴影质量 private int shadowQualityLevel_ = 2; public Button shadowQualitySettingLeft_; public Button shadowQualitySettingRight_; public Text shadowQualitySettingText_; public void setShadowQuality(bool isleft) { if (isleft && shadowQualityLevel_ > 0) { shadowQualityLevel_ -= 1; } else if (!isleft && shadowQualityLevel_ < 2) { shadowQualityLevel_ += 1; } changeShadowQualityEffect(); } private void changeShadowQualityEffect() { if (shadowQualityLevel_ == 2) { shadowQualitySettingRight_.interactable = false; } else { shadowQualitySettingRight_.interactable = true; } if (shadowQualityLevel_ == 0) { shadowQualitySettingLeft_.interactable = false; } else { shadowQualitySettingLeft_.interactable = true; } switch (shadowQualityLevel_) { case 0: QualitySettings.shadows = ShadowQuality.Disable; shadowQualitySettingText_.text = "无阴影"; break; case 1: QualitySettings.shadows = ShadowQuality.HardOnly; shadowQualitySettingText_.text = "只有硬阴影"; break; case 2: QualitySettings.shadows = ShadowQuality.All; shadowQualitySettingText_.text = "全部阴影"; break; } } //1.5抗锯齿 private int antiAliasingQualityLevel_ = 1; public Button antiAliasingQualitySettingLeft_; public Button antiAliasingQualitySettingRight_; public Text antiAliasingQualitySettingText_; public void setAntiAliasingQuality(bool isleft) { if (isleft && antiAliasingQualityLevel_ > 0) { antiAliasingQualityLevel_ -= 1; } else if (!isleft && antiAliasingQualityLevel_ < 3) { antiAliasingQualityLevel_ += 1; } changeAntiAliasingQualityEffect(); } private void changeAntiAliasingQualityEffect() { if (antiAliasingQualityLevel_ > 2) QualitySettings.antiAliasing = antiAliasingQualityLevel_ * 2 + 2; else QualitySettings.antiAliasing = antiAliasingQualityLevel_ * 2; if (antiAliasingQualityLevel_ == 3) { antiAliasingQualitySettingRight_.interactable = false; } else { antiAliasingQualitySettingRight_.interactable = true; } if (antiAliasingQualityLevel_ == 0) { antiAliasingQualitySettingLeft_.interactable = false; } else { antiAliasingQualitySettingLeft_.interactable = true; } switch (antiAliasingQualityLevel_) { case 0: antiAliasingQualitySettingText_.text = "关闭"; break; case 1: antiAliasingQualitySettingText_.text = "2x"; break; case 2: antiAliasingQualitySettingText_.text = "4x"; break; case 3: antiAliasingQualitySettingText_.text = "8x"; break; } } //1.6各项异性纹理过滤 private bool openAnisotropicTextures = true; public Button anisotropicButtonLeft_; public Button anisotropicButtonRight_; public Text anisotropicText_; public void setAnisotropicQuality(bool isleft) { if (isleft && openAnisotropicTextures) { openAnisotropicTextures = false; } else if (!isleft && !openAnisotropicTextures) { openAnisotropicTextures = true; } changeAnisotropicEffect(); } private void changeAnisotropicEffect() { if (openAnisotropicTextures) { QualitySettings.anisotropicFiltering = AnisotropicFiltering.Enable; anisotropicButtonLeft_.interactable = true; anisotropicButtonRight_.interactable = false; anisotropicText_.text = "开"; } else { QualitySettings.anisotropicFiltering = AnisotropicFiltering.Disable; anisotropicButtonLeft_.interactable = false; anisotropicButtonRight_.interactable = true; anisotropicText_.text = "关"; } } //1.7垂直同步 private bool openVSync = true; public Button vSyncButtonLeft_; public Button vSyncButtonRight_; public Text vSyncText_; public void setVSyncQuality(bool isleft) { if (isleft && openVSync) { openVSync = false; } else if (!isleft && !openVSync) { openVSync = true; } changeVSyncEffect(); } private void changeVSyncEffect() { if (openVSync) { QualitySettings.vSyncCount = 1; vSyncButtonRight_.interactable = false; vSyncButtonLeft_.interactable = true; vSyncText_.text = "开"; } else { QualitySettings.vSyncCount = 0; vSyncButtonLeft_.interactable = false; vSyncButtonRight_.interactable = true; vSyncText_.text = "关"; } } //获取音量调整控件 public Slider volume_1; public Slider volume_2; public Slider volume_3; //保存设置 public void saveSettingAll() { //保存游戏设置/全局雾效/泛光/SSAO gameSettingSave(); //保存画质设置 SaveSystem.SetInt("videoSetting1", qualityLevel_); SaveSystem.SetInt("videoSetting2", textureQualityLevel_); SaveSystem.SetInt("videoSetting3", shadowQualityLevel_); SaveSystem.SetInt("videoSetting4", antiAliasingQualityLevel_); SaveSystem.SetBool("videoSetting5", openAnisotropicTextures); SaveSystem.SetBool("videoSetting6", openVSync); //保存音量设置 SaveSystem.SetFloat("volumeSetting1",volume_1.value); SaveSystem.SetFloat("volumeSetting2", volume_2.value); SaveSystem.SetFloat("volumeSetting3", volume_3.value); } //加载设置 public void loadingSettingAll() { gameSettingLoad(); //加载画质设置 qualityLevel_ = SaveSystem.GetInt("videoSetting1"); textureQualityLevel_ = SaveSystem.GetInt("videoSetting2"); shadowQualityLevel_ = SaveSystem.GetInt("videoSetting3"); antiAliasingQualityLevel_ = SaveSystem.GetInt("videoSetting4"); openAnisotropicTextures = SaveSystem.GetBool("videoSetting5"); openVSync = SaveSystem.GetBool("videoSetting6"); //加载音量设置 volume_1.value = SaveSystem.GetFloat("volumeSetting1"); volume_2.value = SaveSystem.GetFloat("volumeSetting2"); volume_3.value = SaveSystem.GetFloat("volumeSetting3"); //应用对应设置 changeAllQualityEffect(); changeTextureQualityEffect(); changeShadowQualityEffect(); changeAntiAliasingQualityEffect(); changeAnisotropicEffect(); changeVSyncEffect(); } }