天天看点

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地址: 传送门