You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
262 lines
7.1 KiB
262 lines
7.1 KiB
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using UnityEngine.SceneManagement; |
|
using System; |
|
using System.IO; |
|
using System.Text; |
|
|
|
public enum Frame |
|
{ |
|
低配置 = 0, |
|
中配置 = 1, |
|
高配置 = 2, |
|
完美画质 = 3 |
|
} |
|
[Serializable] |
|
public class System_Setting |
|
{ |
|
public int resolutionX; |
|
public int resolutionY; |
|
public bool isFullScreen; |
|
public float bgmValue; |
|
public float seValue; |
|
public bool isMuto; |
|
public Frame frameSelect; |
|
} |
|
public class SystemSettig : MonoBehaviour |
|
{ |
|
/// <summary> |
|
/// 分辨率width |
|
/// </summary> |
|
public static int ResolutionX; |
|
/// <summary> |
|
/// 分辨率height |
|
/// </summary> |
|
public static int ResolutionY; |
|
/// <summary> |
|
/// 是否全屏 |
|
/// </summary> |
|
public static bool IsFullScreen; |
|
/// <summary> |
|
/// 背景音乐 |
|
/// </summary> |
|
public static float BgmValue; |
|
/// <summary> |
|
/// 特效音乐 |
|
/// </summary> |
|
public static float SEValue; |
|
/// <summary> |
|
/// 是否静音 |
|
/// </summary> |
|
public static bool IsMute; |
|
/// <summary> |
|
/// 画质设置 |
|
/// </summary> |
|
public static Frame FrameSelect; |
|
|
|
public const int DefultResolutionX = 1366; |
|
public const int DefultResolutionY = 768; |
|
public const bool DefulteIsFullScreen = false; |
|
public const float DefultBgmValue = 0.5f; |
|
public const float DefultSEValue = 0.5f; |
|
public const bool DefultIsMute = false; |
|
public const Frame DefultFrameSelect = Frame.完美画质; |
|
|
|
public static SystemSettig instance = null; |
|
|
|
public static string Hinttext=""; |
|
string path; |
|
void Awake() |
|
{ |
|
System_Setting load = new System_Setting(); |
|
path = Application.streamingAssetsPath + "/System.json"; |
|
// Debug.Log(Application.streamingAssetsPath); |
|
//Debug.Log(path); |
|
load = LoadFromFile(); |
|
if (load==null) |
|
{ |
|
load = DefuletSetting(); |
|
} |
|
//设置画质与分辨率 |
|
SystemSettig.ShowAndFrameSetfunction(load); |
|
//设置声音 |
|
SystemSettig.ResolutionX = load.resolutionX; |
|
ResolutionY = load.resolutionY; |
|
IsFullScreen = load.isFullScreen; |
|
IsMute = load.isMuto; |
|
BgmValue = load.bgmValue; |
|
SEValue = load.seValue; |
|
FrameSelect = load.frameSelect; |
|
SystemSettig.SoundSetFunction(); |
|
|
|
} |
|
public static void RessetToDefult() |
|
{ |
|
ResolutionX = DefultResolutionX; |
|
ResolutionY = DefultResolutionY; |
|
IsFullScreen = DefulteIsFullScreen; |
|
BgmValue = DefultBgmValue; |
|
SEValue = DefultSEValue; |
|
IsMute = DefultIsMute; |
|
FrameSelect = DefultFrameSelect; |
|
Hinttext = ""; |
|
} |
|
|
|
// Use this for initialization |
|
void Start() |
|
{ |
|
if (instance == null) |
|
{ |
|
instance = this; |
|
} |
|
|
|
//DontDestroyOnLoad(gameObject); |
|
} |
|
/// <summary> |
|
/// 设置显示和画质 |
|
/// </summary> |
|
/// <param name="sys"></param> |
|
public static void ShowAndFrameSetfunction(System_Setting sys) |
|
{ |
|
//显示设置 |
|
if (sys.isFullScreen) |
|
{ |
|
Screen.SetResolution(sys.resolutionX, sys.resolutionY, true); |
|
} |
|
else |
|
{ |
|
Screen.SetResolution(sys.resolutionX, sys.resolutionY, false); |
|
} |
|
//声音设置//切场景单独调用 |
|
|
|
//画面设置 |
|
if (sys.frameSelect == Frame.低配置) |
|
{ |
|
QualitySettings.SetQualityLevel(1); |
|
} |
|
if (sys.frameSelect == Frame.中配置) |
|
{ |
|
QualitySettings.SetQualityLevel(2); |
|
} |
|
if (sys.frameSelect == Frame.高配置) |
|
{ |
|
QualitySettings.SetQualityLevel(4); |
|
} |
|
if (sys.frameSelect == Frame.完美画质) |
|
{ |
|
QualitySettings.SetQualityLevel(5); |
|
} |
|
} |
|
/// <summary> |
|
/// 设置声音,每个场景都要调一次 |
|
/// </summary> |
|
public static void SoundSetFunction() |
|
{ |
|
ThisVoiceType[] voiceall = FindObjectsOfType<ThisVoiceType>(); |
|
if (voiceall != null && voiceall.Length > 0) |
|
{ |
|
for (int i = 0; i < voiceall.Length; i++) |
|
{ |
|
if (voiceall[i].Voice_Type == VoiceType.背景音) |
|
{ |
|
voiceall[i].GetComponent<AudioSource>().volume = BgmValue; |
|
voiceall[i].GetComponent<AudioSource>().loop = true; |
|
} |
|
else if (voiceall[i].Voice_Type == VoiceType.特效音) |
|
{ |
|
voiceall[i].GetComponent<AudioSource>().volume = SEValue; |
|
voiceall[i].GetComponent<AudioSource>().playOnAwake = false; |
|
} |
|
else |
|
{ |
|
|
|
} |
|
if (IsMute) |
|
{ |
|
voiceall[i].GetComponent<AudioSource>().enabled = false; |
|
} |
|
else |
|
{ |
|
voiceall[i].GetComponent<AudioSource>().enabled = true; |
|
} |
|
} |
|
} |
|
} |
|
public static void DefultSoundSetFunction() |
|
{ |
|
ThisVoiceType[] voiceall = FindObjectsOfType<ThisVoiceType>(); |
|
if (voiceall != null && voiceall.Length > 0) |
|
{ |
|
for (int i = 0; i < voiceall.Length; i++) |
|
{ |
|
if (voiceall[i].Voice_Type == VoiceType.背景音) |
|
{ |
|
voiceall[i].GetComponent<AudioSource>().volume = DefultBgmValue; |
|
} |
|
else if (voiceall[i].Voice_Type == VoiceType.特效音) |
|
{ |
|
voiceall[i].GetComponent<AudioSource>().volume = DefultSEValue; |
|
} |
|
else |
|
{ |
|
|
|
} |
|
if (IsMute) |
|
{ |
|
voiceall[i].GetComponent<AudioSource>().enabled = DefultIsMute; |
|
} |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 读取json文件,没有返回默认; |
|
/// </summary> |
|
/// <returns></returns> |
|
public System_Setting LoadFromFile() |
|
{ |
|
if (!File.Exists(path)) |
|
{ |
|
return null; |
|
} |
|
|
|
StreamReader sr = new StreamReader(path); |
|
|
|
if (sr == null) |
|
{ |
|
Hinttext="文件流为空"; |
|
return null; |
|
} |
|
|
|
string json = sr.ReadToEnd(); |
|
|
|
if (json.Length > 0) |
|
{ |
|
Hinttext = "配置成功"; |
|
return JsonUtility.FromJson<System_Setting>(json); |
|
} |
|
|
|
Hinttext = "配置失败"; |
|
return null; |
|
} |
|
|
|
|
|
public void SaveToJson(System_Setting sys) |
|
{ |
|
string json = JsonUtility.ToJson(sys, true); |
|
File.WriteAllText(path, json, Encoding.UTF8); |
|
} |
|
public System_Setting DefuletSetting() |
|
{ |
|
System_Setting sys = new System_Setting(); |
|
sys.resolutionX = DefultResolutionX; |
|
sys.resolutionY = DefultResolutionY; |
|
sys.isFullScreen = DefulteIsFullScreen; |
|
sys.bgmValue = DefultBgmValue; |
|
sys.seValue = DefultSEValue; |
|
sys.isMuto = DefultIsMute; |
|
sys.frameSelect = DefultFrameSelect; |
|
return sys; |
|
} |
|
}
|
|
|