天天看點

GameFramework---遊戲配置(七)一、正常用法二、實踐

特别提示: 本系列基于Unity 2019.4.8,架構版本GameFramework 2021.05.31

本系列部落格位址: 傳送門

遊戲配置是以鍵值對的形式存儲玩家資料,對 UnityEngine.PlayerPrefs 進行封裝,也可以将這些資料直接存儲在磁盤上。

一、正常用法

擷取遊戲配置元件

寫入

public void SetInt(string settingName, int value)
public void SetFloat(string settingName, float value)
public void SetString(string settingName, string value)
public void SetObject<T>(string settingName, T obj)
           

讀取

public int GetInt(string settingName)
public float GetFloat(string settingName)
public string GetString(string settingName)
public T GetObject<T>(string settingName)
           

移除

public void RemoveSetting(string settingName)
public void RemoveAllSettings()
           

儲存遊戲配置

二、實踐

上一篇遺留的問題,我們需要在Setting界面儲存我們的設定,有儲存肯定也是需要讀取的

  • 增加Constant腳本
public static class Constant
{
	public const string Language = "Setting.Language";
	public const string MusicToggle = "Setting.MusicToggle";
	public const string MusicVolume = "Setting.MusicVolume";
	public const string SoundEffectToggle = "Setting.SoundEffectToggle";
	public const string SoundEffectVolume = "Setting.SoundEffectVolume";
	public const string UISoundEffectToggle = "Setting.UISoundEffectToggle";
	public const string UISoundEffectVolume = "Setting.UISoundEffectVolume";
}
           
  • 在Setting界面點選确定按鈕儲存設定
public void ClickConfirmBtn()
{
	if (m_SelectedLanguage == Component.Localization.Language)
	{
		Close();
		Component.UI.OpenUIForm("Assets/Prefabs/Canvas_Menu.prefab", "Default");
		return;
	}
	Component.Setting.SetString(Constant.Language, m_SelectedLanguage.ToString());
	Component.Setting.Save();
	//關閉架構 ShutdownType為重新開機
	GameEntry.Shutdown(ShutdownType.Restart);
}
           
  • 在進入ProcedureExample流程時初始化Language
//初始化語言設定
private void InitLanguageSettings()
{
	if (Component.Base.EditorResourceMode && Component.Base.EditorLanguage != Language.Unspecified)
	{
		// 編輯器資源模式直接使用 Inspector 上設定的語言
		return;
	}

	Language language = Component.Localization.Language;
	if (Component.Setting.HasSetting(Constant.Language))
	{
		try
		{
			string languageString = Component.Setting.GetString(Constant.Language);
			language = (Language)Enum.Parse(typeof(Language), languageString);
			}
		catch
		{
		}
	}

	if (language != Language.English
				&& language != Language.ChineseSimplified)
	{
		// 若是暫不支援的語言,則使用中文
		language = Language.ChineseSimplified;

			Component.Setting.SetString(Constant.Language, language.ToString());
			Component.Setting.Save();
	}

	Component.Localization.Language = language;
	Log.Info("Init language settings complete, current language is '{0}'.", language.ToString());
}
           

至此我們已經可以随意的切換多語言

Demo位址: 傳送門