ManaLan.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. public enum Lan
  6. {
  7. Default,
  8. English,
  9. ChineseSimplified,
  10. ChineseTraditional,
  11. }
  12. public class LanStr
  13. {
  14. public string ID;
  15. public string Page;
  16. public LanStr(string id, string page)
  17. {
  18. ID = id;
  19. Page = page;
  20. }
  21. public override string ToString()
  22. {
  23. return Language.GetStr(ID, Page);
  24. }
  25. }
  26. public class ManaLan : Regist
  27. {
  28. #region 变量
  29. public static Lan CurrentLan;
  30. public static Dictionary<Text, object[]> TextDic = new Dictionary<Text, object[]>();
  31. public static Dictionary<TextMesh, object[]> TextMeshDic = new Dictionary<TextMesh, object[]>();
  32. #endregion
  33. public static void Add(Text text, params object[] objs)
  34. {
  35. if (TextDic.ContainsKey(text))
  36. {
  37. TextDic[text] = objs;
  38. text.text = Translate(objs);
  39. }
  40. else
  41. {
  42. TextDic.Add(text, objs);
  43. text.text = Translate(objs);
  44. }
  45. }
  46. public static void Add(TextMesh textMesh, params object[] objs)
  47. {
  48. if (TextMeshDic.ContainsKey(textMesh))
  49. {
  50. TextMeshDic[textMesh] = objs;
  51. textMesh.text = Translate(objs);
  52. }
  53. else
  54. {
  55. TextMeshDic.Add(textMesh, objs);
  56. textMesh.text = Translate(objs);
  57. }
  58. }
  59. public static void SwitchLanguage(Lan lan)
  60. {
  61. CurrentLan = lan;
  62. Language.SwitchLanguage(lan);
  63. ManaCenter.SwitchLanguage();
  64. foreach (var kv in TextDic)
  65. {
  66. kv.Key.text = Translate(kv.Value);
  67. }
  68. foreach (var kv in TextMeshDic)
  69. {
  70. kv.Key.text = Translate(kv.Value);
  71. }
  72. foreach (var kv in ManaAchieve.AchieveDic)
  73. {
  74. if (kv.Value.AchieveItem != null)
  75. {
  76. kv.Value.Lab.text = Achieve.GetDescription(kv.Value.Desc, kv.Value.TargetValue);
  77. }
  78. }
  79. for (int i = 0; i < ManaCenter.SkillList.Count; i++)
  80. {
  81. ManaCenter.SkillList[i].SwitchLanguage();
  82. }
  83. }
  84. public static string Translate(object[] objs)
  85. {
  86. string str = "";
  87. for (int i = 0; i < objs.Length; i++)
  88. {
  89. LanStr lanStr = objs[i] as LanStr;
  90. if (lanStr == null)
  91. {
  92. str += objs[i];
  93. }
  94. else
  95. {
  96. str += lanStr.ToString();
  97. }
  98. }
  99. return str;
  100. }
  101. }