123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 Jiang Yin. All rights reserved.
- // Homepage: https://gameframework.cn/
- // Feedback: mailto:ellan@gameframework.cn
- //------------------------------------------------------------
- using GameFramework.Localization;
- using System;
- using UnityGameFramework.Runtime;
- using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
- namespace MetaClient
- {
- public class ProcedureLaunch : ProcedureBase
- {
- public override bool UseNativeDialog
- {
- get
- {
- return true;
- }
- }
- protected override void OnEnter(ProcedureOwner procedureOwner)
- {
- base.OnEnter(procedureOwner);
- // 构建信息:发布版本时,把一些数据以 Json 的格式写入 Assets/GameMain/Configs/BuildInfo.txt,供游戏逻辑读取
- GameEntry.BuiltinData.InitBuildInfo();
- // 语言配置:设置当前使用的语言,如果不设置,则默认使用操作系统语言
- InitLanguageSettings();
- // 变体配置:根据使用的语言,通知底层加载对应的资源变体
- InitCurrentVariant();
- // 声音配置:根据用户配置数据,设置即将使用的声音选项
- InitSoundSettings();
- // 默认字典:加载默认字典文件 Assets/GameMain/Configs/DefaultDictionary.xml
- // 此字典文件记录了资源更新前使用的各种语言的字符串,会随 App 一起发布,故不可更新
- GameEntry.BuiltinData.InitDefaultDictionary();
- }
- protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
- {
- base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
- // 运行一帧即切换到 Splash 展示流程
- ChangeState<ProcedureSplash>(procedureOwner);
- }
- private void InitLanguageSettings()
- {
- if (GameEntry.Base.EditorResourceMode && GameEntry.Base.EditorLanguage != Language.Unspecified)
- {
- // 编辑器资源模式直接使用 Inspector 上设置的语言
- return;
- }
- Language language = GameEntry.Localization.Language;
- if (GameEntry.Setting.HasSetting(Constant.Setting.Language))
- {
- try
- {
- string languageString = GameEntry.Setting.GetString(Constant.Setting.Language);
- language = (Language)Enum.Parse(typeof(Language), languageString);
- }
- catch
- {
- }
- }
- if (language != Language.English
- && language != Language.ChineseSimplified
- && language != Language.ChineseTraditional
- && language != Language.Korean)
- {
- // 若是暂不支持的语言,则使用英语
- language = Language.English;
- GameEntry.Setting.SetString(Constant.Setting.Language, language.ToString());
- GameEntry.Setting.Save();
- }
- GameEntry.Localization.Language = language;
- Log.Info("Init language settings complete, current language is '{0}'.", language.ToString());
- }
- private void InitCurrentVariant()
- {
- if (GameEntry.Base.EditorResourceMode)
- {
- // 编辑器资源模式不使用 AssetBundle,也就没有变体了
- return;
- }
- string currentVariant = null;
- switch (GameEntry.Localization.Language)
- {
- case Language.English:
- currentVariant = "en-us";
- break;
- case Language.ChineseSimplified:
- currentVariant = "zh-cn";
- break;
- case Language.ChineseTraditional:
- currentVariant = "zh-tw";
- break;
- case Language.Korean:
- currentVariant = "ko-kr";
- break;
- default:
- currentVariant = "zh-cn";
- break;
- }
- GameEntry.Resource.SetCurrentVariant(currentVariant);
- Log.Info("Init current variant complete.");
- }
- private void InitSoundSettings()
- {
- GameEntry.Sound.Mute("Music", GameEntry.Setting.GetBool(Constant.Setting.MusicMuted, false));
- GameEntry.Sound.SetVolume("Music", GameEntry.Setting.GetFloat(Constant.Setting.MusicVolume, 0.3f));
- GameEntry.Sound.Mute("Sound", GameEntry.Setting.GetBool(Constant.Setting.SoundMuted, false));
- GameEntry.Sound.SetVolume("Sound", GameEntry.Setting.GetFloat(Constant.Setting.SoundVolume, 1f));
- GameEntry.Sound.Mute("UISound", GameEntry.Setting.GetBool(Constant.Setting.UISoundMuted, false));
- GameEntry.Sound.SetVolume("UISound", GameEntry.Setting.GetFloat(Constant.Setting.UISoundVolume, 1f));
- Log.Info("Init sound settings complete.");
- }
- }
- }
|