ProcedureLaunch.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. 
  2. using GameFramework.Localization;
  3. using System;
  4. using UGFExtensions.Await;
  5. using UnityGameFramework.Runtime;
  6. using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
  7. namespace GFMain
  8. {
  9. public class ProcedureLaunch : ProcedureBase
  10. {
  11. public override bool UseNativeDialog
  12. {
  13. get
  14. {
  15. return true;
  16. }
  17. }
  18. protected override void OnEnter(ProcedureOwner procedureOwner)
  19. {
  20. base.OnEnter(procedureOwner);
  21. // 构建信息:发布版本时,把一些数据以 Json 的格式写入 Assets/GameMain/_Configs/BuildInfo.txt,供游戏逻辑读取
  22. MainEntry.BuiltinData.InitBuildInfo();
  23. // 语言配置:设置当前使用的语言,如果不设置,则默认使用操作系统语言
  24. InitLanguageSettings();
  25. // 变体配置:根据使用的语言,通知底层加载对应的资源变体
  26. InitCurrentVariant();
  27. // 声音配置:根据用户配置数据,设置即将使用的声音选项
  28. InitSoundSettings();
  29. AwaitableExtensions.SubscribeEvent();
  30. }
  31. protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
  32. {
  33. base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
  34. // 运行一帧即切换到 Splash 展示流程
  35. ChangeState<ProcedureSplash>(procedureOwner);
  36. }
  37. private void InitLanguageSettings()
  38. {
  39. if (MainEntry.Base.EditorResourceMode && MainEntry.Base.EditorLanguage != Language.Unspecified)
  40. {
  41. // 编辑器资源模式直接使用 Inspector 上设置的语言
  42. return;
  43. }
  44. Language language = MainEntry.Localization.Language;
  45. if (MainEntry.Setting.HasSetting(Constant.Setting.Language))
  46. {
  47. try
  48. {
  49. string languageString = MainEntry.Setting.GetString(Constant.Setting.Language);
  50. language = (Language)Enum.Parse(typeof(Language), languageString);
  51. }
  52. catch
  53. {
  54. }
  55. }
  56. if (language != Language.English
  57. && language != Language.ChineseSimplified
  58. && language != Language.ChineseTraditional
  59. && language != Language.Korean)
  60. {
  61. // 若是暂不支持的语言,则使用英语
  62. language = Language.English;
  63. MainEntry.Setting.SetString(Constant.Setting.Language, language.ToString());
  64. MainEntry.Setting.Save();
  65. }
  66. MainEntry.Localization.Language = language;
  67. Log.Info("Init language settings complete, current language is '{0}'.", language.ToString());
  68. }
  69. private void InitCurrentVariant()
  70. {
  71. if (MainEntry.Base.EditorResourceMode)
  72. {
  73. // 编辑器资源模式不使用 AssetBundle,也就没有变体了
  74. return;
  75. }
  76. string currentVariant = null;
  77. switch (MainEntry.Localization.Language)
  78. {
  79. case Language.English:
  80. currentVariant = "en-us";
  81. break;
  82. case Language.ChineseSimplified:
  83. currentVariant = "zh-cn";
  84. break;
  85. case Language.ChineseTraditional:
  86. currentVariant = "zh-tw";
  87. break;
  88. case Language.Korean:
  89. currentVariant = "ko-kr";
  90. break;
  91. default:
  92. currentVariant = "zh-cn";
  93. break;
  94. }
  95. MainEntry.Resource.SetCurrentVariant(currentVariant);
  96. Log.Info("Init current variant complete.");
  97. }
  98. private void InitSoundSettings()
  99. {
  100. //GameEntry.Sound.Mute("Music", GameEntry.Setting.GetBool(Constant.Setting.MusicMuted, false));
  101. //GameEntry.Sound.SetVolume("Music", GameEntry.Setting.GetFloat(Constant.Setting.MusicVolume, 0.3f));
  102. //GameEntry.Sound.Mute("Sound", GameEntry.Setting.GetBool(Constant.Setting.SoundMuted, false));
  103. //GameEntry.Sound.SetVolume("Sound", GameEntry.Setting.GetFloat(Constant.Setting.SoundVolume, 1f));
  104. //GameEntry.Sound.Mute("UISound", GameEntry.Setting.GetBool(Constant.Setting.UISoundMuted, false));
  105. //GameEntry.Sound.SetVolume("UISound", GameEntry.Setting.GetFloat(Constant.Setting.UISoundVolume, 1f));
  106. Log.Info("Init sound settings complete.");
  107. }
  108. }
  109. }