TextAutoLanguage.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. /* 自定义多语言组件 */
  7. public class TextAutoLanguage : MonoBehaviour
  8. {
  9. [SerializeField] int textID;
  10. [SerializeField] RectTransform layoutRebuildObject;
  11. static LanguageEnum currentLanguageEnum = LanguageEnum.Chinese;
  12. static LanguageDefault language = null;
  13. static HashSet<TextAutoLanguage> textAutoLanguages = new HashSet<TextAutoLanguage>();
  14. public string[] textFormatArgs = {};
  15. [SerializeField] LanguageFontSize[] languageFontSizes = {};
  16. public static void Init()
  17. {
  18. int id = PlayerPrefs.GetInt("Language", 0);
  19. ChangeLanguage((LanguageEnum) id);
  20. }
  21. public static void ChangeLanguage(LanguageEnum languageEnum)
  22. {
  23. currentLanguageEnum = languageEnum;
  24. if (languageEnum == LanguageEnum.Chinese) {
  25. language = new LanguageDefault();
  26. } else if (languageEnum == LanguageEnum.English) {
  27. language = new LanguageEnglish();
  28. }
  29. PlayerPrefs.SetInt("Language", ((int)languageEnum));
  30. foreach (var textAutoLanguage in textAutoLanguages)
  31. {
  32. try {
  33. textAutoLanguage.ApplyText();
  34. } catch (Exception) {}
  35. }
  36. }
  37. public static LanguageEnum GetLanguage()
  38. {
  39. if (language is LanguageEnglish) {
  40. return LanguageEnum.English;
  41. }
  42. return LanguageEnum.Chinese;
  43. }
  44. void Awake()
  45. {
  46. if (language == null) ChangeLanguage(currentLanguageEnum);
  47. }
  48. void Start()
  49. {
  50. textAutoLanguages.Add(this);
  51. ApplyText();
  52. }
  53. void OnDestroy()
  54. {
  55. textAutoLanguages.Remove(this);
  56. }
  57. /**记录组件的默认字体大小 */
  58. private int defaultFontSize = -1;
  59. public void SetText(int textID)
  60. {
  61. this.textID = textID;
  62. string text = language.GetType().GetField("text" + textID).GetValue(language).ToString();
  63. if (textFormatArgs.Length > 0)
  64. {
  65. text = String.Format(text, textFormatArgs);
  66. }
  67. Text textComp = GetComponent<Text>();
  68. textComp.text = text;
  69. //如果有指定当前语言的字体大小,就更新字体大小,否则恢复默认字体大小
  70. if (defaultFontSize == -1) { //首次记录组件的默认字体大小
  71. defaultFontSize = textComp.fontSize;
  72. } else {
  73. textComp.fontSize = defaultFontSize;
  74. }
  75. if (languageFontSizes.Length > 0) {
  76. foreach (var languageFontSize in languageFontSizes)
  77. {
  78. if (languageFontSize.language == currentLanguageEnum) {
  79. textComp.fontSize = languageFontSize.fontSize;
  80. }
  81. }
  82. }
  83. //重置指定节点的布局
  84. if (layoutRebuildObject)
  85. {
  86. LayoutRebuilder.ForceRebuildLayoutImmediate(layoutRebuildObject);
  87. }
  88. }
  89. public int GetTextID()
  90. {
  91. return this.textID;
  92. }
  93. void ApplyText()
  94. {
  95. SetText(textID);
  96. }
  97. }
  98. [Serializable]
  99. class LanguageFontSize {
  100. public LanguageEnum language;
  101. public int fontSize;
  102. }
  103. public enum LanguageEnum {
  104. Chinese, English
  105. }
  106. class LanguageDefault {
  107. public string text0 = "";
  108. public string text1 = "昵 称 :";
  109. public string text2 = "手 机 号 :";
  110. public string text3 = "性 别 :";
  111. public string text4 = "出生日期 :";
  112. public string text5 = "国 籍 :";
  113. public string text6 = "所在地区 :";
  114. public string text7 = "保存";
  115. public string text8 = "男";
  116. public string text9 = "女";
  117. public string text10 = "未填写";
  118. public string text11 = "昵称不能为空";
  119. public string text12 = "保存成功";
  120. public string text13 = "我的";
  121. public string text14 = "连接";
  122. public string text15 = "正在连接";
  123. public string text16 = "连接成功";
  124. public string text17 = "断开连接";
  125. public string text18 = "神弓";
  126. public string text19 = "神箭";
  127. public string text20 = "设置";
  128. public string text21 = "教程";
  129. public string text22 = "商城";
  130. public string text23 = "设备";
  131. public string text24 = "用 户 名 :";
  132. public string text25 = "密 码 :";
  133. public string text26 = "忘记密码";
  134. public string text27 = "注册";
  135. public string text28 = "用 户 名 :";
  136. public string text29 = "密 码 :";
  137. public string text30 = "确认密码 :";
  138. public string text31 = "昵 称 :";
  139. public string text32 = "性 别 :";
  140. public string text33 = "登录";
  141. public string text34 = "手 机 号 :";
  142. public string text35 = "验 证 码 :";
  143. public string text36 = "新 密 码 :";
  144. public string text37 = "确认密码 :";
  145. public string text38 = "获取";
  146. public string text39 = "用户登录";
  147. public string text40 = "手机登录";
  148. public string text41 = "请输入用户名";
  149. public string text42 = "请输入密码";
  150. public string text43 = "登录成功";
  151. public string text44 = "密码错误";
  152. public string text45 = "该用户尚未注册";
  153. public string text46 = "用户名长度至少6位";
  154. public string text47 = "密码长度至少6位";
  155. public string text48 = "两次输入的密码不一致";
  156. public string text49 = "请输入游戏昵称";
  157. public string text50 = "该用户无法重复注册";
  158. public string text51 = "注册成功";
  159. public string text61 = "请连接设备";
  160. public string text62 = "关闭";
  161. public string text63 = "商品";
  162. public string text64 = "背包";
  163. public string text65 = "已装备";
  164. public string text66 = "购买";
  165. public string text67 = "属性";
  166. public string text68 = "操作难度 : ";
  167. public string text69 = "设备教程";
  168. public string text70 = "游戏教程";
  169. public string text71 = "角色选择";
  170. public string text72 = "玩家1";
  171. public string text73 = "玩家2";
  172. public string text74 = "开始游戏";
  173. public string text87 = "本轮玩家";
  174. public string text88 = "继续";
  175. public string text89 = "主页";
  176. public string text90 = "分享";
  177. public string text91 = "再来";
  178. public string text92 = "友谊赛";
  179. public string text93 = "当前玩家";
  180. public string text94 = "距离选择";
  181. public string text95 = "得分:";
  182. public string text96 = "新手教程";
  183. public string text97 = "返回主页";
  184. public string text98 = "完成";
  185. public string text99 = "闯关";
  186. public string text100 = "限时";
  187. public string text101 = "排行榜";
  188. public string text102 = "游戏";
  189. public string text103 = "登录";
  190. public string text104 = "结束";
  191. public string text105 = "胜利";
  192. public string text106 = "失败";
  193. public string text107 = "已售罄";
  194. public string text108 = "使用";
  195. public string text109 = "使用中";
  196. public string text110 = "取消";
  197. public string text111 = "需要装备倍镜";
  198. public string text112 = "需要装备射速卡";
  199. public string text113 = "弓";
  200. public string text114 = "箭";
  201. public string text115 = "第 {0} 局";
  202. public string text117 = "长度{0}~{1}位,限英文和数字";
  203. public string text118 = "靶子已超出当前射程,请加大拉距或去商城装备射速卡!";
  204. public string text119 = "长度{0}~{1}位,可使用中文";
  205. //设备页面
  206. public string text500 = "陀螺仪校准";
  207. public string text501 = "地磁计校准";
  208. public string text502 = "视角回正";
  209. public string text503 = "16G加速计";
  210. public string text504 = "64G加速计";
  211. //主页面
  212. public string text400 = "退出游戏";
  213. //设置页面
  214. public string text300 = "退出登录";
  215. public string text301 = "关于我们";
  216. public string text302 = "背景音乐";
  217. public string text303 = "音效";
  218. public string text304 = "语言";
  219. public string text305 = "简体中文";
  220. public string text306 = "十字准心";
  221. public string text307 = "开";
  222. public string text308 = "关";
  223. public string text309 = "射箭难度";
  224. public string text310 = "简单";
  225. public string text311 = "普通";
  226. public string text312 = "困难";
  227. public string text313 = "实际箭重";
  228. public string text314 = "{0}克";
  229. //设备校准页面
  230. public string text76 = "视角归位";
  231. public string text77 = "上一步";
  232. public string text78 = "下一步";
  233. public string text79 = "完成";
  234. public string text80 = "视角回正";
  235. public string text81 = "实体弓指向正前方,然后点击视角回正。";
  236. public string text82 = "开始校准";
  237. public string text83 = "停止校准";
  238. public string text84 = "尽量尝试多角度旋转模块,直到XYZ三个象限中多点形成圆形为止。";
  239. public string text85 = "开始校准";
  240. public string text86 = "校准时需要将瞄准模块静止放在桌面上。";
  241. public string text116 = "重新校准";
  242. public string text120 = "校准效果不理想,请重新校准!";
  243. public string text121 = "取消校准";
  244. //游戏场景通用UI信息
  245. public string text200 = "引导";
  246. public string text201 = "开镜";
  247. public string text202 = "加速";
  248. public string text203 = "视角归位";
  249. public string text204 = "查看靶子";
  250. public string text205 = "关闭";
  251. // 游戏规则
  252. public string text1000 = "在固定的时间内尽量射更多的箭。";
  253. public string text1001 = "总环数逐渐增加,挑战自己的纪录。";
  254. public string text2000 = "两个人轮流射箭,使用奥运会的规则进行PK。";
  255. public string text2001 = "比赛最多为5局,每局3支箭,交替射箭。";
  256. public string text2002 = "获胜者获得积分2分,打平各1分,输者不得积分。";
  257. public string text2003 = "先得6分者胜利,如5局打完是平局,则加赛一箭定胜负。";
  258. //道具名称
  259. public string text101000 = "{0}倍镜";
  260. public string text101001 = "{0}倍射速卡";
  261. // 道具介绍
  262. public string text111000 = "射箭瞄准时,视距放大{0}倍。";
  263. public string text111001 = "射箭时,射速增加{0}倍。";
  264. //设备名称
  265. public string text201000 = "18磅反曲弓";
  266. public string text201001 = "25磅反曲弓";
  267. public string text201002 = "碳纤维箭";
  268. // 设备介绍
  269. public string text211000 = "奥运比赛专用比赛弓";
  270. public string text211001 = "奥运比赛专用比赛弓";
  271. public string text211002 = "奥运比赛专用比赛箭";
  272. }
  273. class LanguageEnglish : LanguageDefault {
  274. public new string text1 = "Name :";
  275. public new string text2 = "Phone :";
  276. public new string text3 = "Gender :";
  277. public new string text4 = "Birthday :";
  278. public new string text5 = "Country :";
  279. public new string text6 = "Region :";
  280. public new string text7 = "Save";
  281. public new string text8 = "Male";
  282. public new string text9 = "Female";
  283. public new string text10 = "Not Filled In";
  284. public new string text11 = "Name Cannot Be Empty";
  285. public new string text12 = "Saved Successfully";
  286. public new string text13 = "My";
  287. public new string text14 = "Connect";
  288. public new string text15 = "Connecting";
  289. public new string text16 = "Connected";
  290. public new string text17 = "Break";
  291. public new string text18 = "Bow";
  292. public new string text19 = "Arrow";
  293. public new string text20 = "SetUp";
  294. public new string text21 = "Course";
  295. public new string text22 = "Shop";
  296. public new string text23 = "Device";
  297. public new string text24 = "Username:";
  298. public new string text25 = "Password:";
  299. public new string text26 = "Forget Password";
  300. public new string text27 = "Register";
  301. public new string text28 = "Username :";
  302. public new string text29 = "Password :";
  303. public new string text30 = "Confirm Password :";
  304. public new string text31 = "Nickname :";
  305. public new string text32 = "Gender :";
  306. public new string text33 = "Login";
  307. public new string text34 = "Phone :";
  308. public new string text35 = "Code :";
  309. public new string text36 = "Password :";
  310. public new string text37 = "Confirm Password :";
  311. public new string text38 = "Get";
  312. public new string text39 = "User Login";
  313. public new string text40 = "Phone Login";
  314. public new string text41 = "Please Enter Username";
  315. public new string text42 = "Please Enter Password";
  316. public new string text43 = "Login Successful";
  317. public new string text44 = "Wrong Password";
  318. public new string text45 = "User Not Register";
  319. public new string text46 = "Username At Least 6 Digits";
  320. public new string text47 = "Password At Least 6 Digits";
  321. public new string text48 = "Two Passwords Are Inconsistent";
  322. public new string text49 = "Please Enter Nickname";
  323. public new string text50 = "Unable To Re Register";
  324. public new string text51 = "Register Successful";
  325. public new string text61 = "Please Connect Device";
  326. public new string text62 = "Close";
  327. public new string text63 = "Products";
  328. public new string text64 = "Bag";
  329. public new string text65 = "Equipped";
  330. public new string text66 = "Buy";
  331. public new string text67 = "Property";
  332. public new string text68 = "Difficulty : ";
  333. public new string text69 = "Device Course";
  334. public new string text70 = "Game Course";
  335. public new string text71 = "Role Select";
  336. public new string text72 = "Player1";
  337. public new string text73 = "Player2";
  338. public new string text74 = "Start";
  339. public new string text87 = "Current Round Player";
  340. public new string text88 = "Continue";
  341. public new string text89 = "Home";
  342. public new string text90 = "Share";
  343. public new string text91 = "Again";
  344. public new string text92 = "PVP";
  345. public new string text93 = "Player";
  346. public new string text94 = "Distance Select";
  347. public new string text95 = "Score:";
  348. public new string text96 = "New Player Guide";
  349. public new string text97 = "Back";
  350. public new string text98 = "Complete";
  351. public new string text99 = "Challenge";
  352. public new string text100 = "Limit";
  353. public new string text101 = "Rank";
  354. public new string text102 = "Game";
  355. public new string text103 = "Login";
  356. public new string text104 = "Over";
  357. public new string text105 = "Win";
  358. public new string text106 = "Lose";
  359. public new string text107 = "SoldOut";
  360. public new string text108 = "Use";
  361. public new string text109 = "Inuse";
  362. public new string text110 = "Cancel";
  363. public new string text111 = "Multiple Mirrors Is Required";
  364. public new string text112 = "Shoot Card Is Required";
  365. public new string text113 = "Bow";
  366. public new string text114 = "Arrow";
  367. public new string text115 = "Round {0}";
  368. public new string text117 = "Limit {0}~{1} Bit, English And Figures";
  369. public new string text118 = "The target has exceeded the current range, please increase the pull distance or go to the shop to equip the shoot card!";
  370. public new string text119 = "Limit {0}~{1} Bit, Can Use Chinese";
  371. //设备页面
  372. public new string text500 = "GyrCalibrate";
  373. public new string text501 = "MagCalibrate";
  374. public new string text502 = "ResetView";
  375. public new string text503 = "16G Acc";
  376. public new string text504 = "64G Acc";
  377. //主页面
  378. public new string text400 = "Quit";
  379. //设置页面
  380. public new string text300 = "Quit Login";
  381. public new string text301 = "About Us";
  382. public new string text302 = "BGM";
  383. public new string text303 = "Sound";
  384. public new string text304 = "Language";
  385. public new string text305 = "English";
  386. public new string text306 = "CrossHair";
  387. public new string text307 = "ON";
  388. public new string text308 = "OFF";
  389. public new string text309 = "ShootLevel";
  390. public new string text310 = "Easy";
  391. public new string text311 = "Normal";
  392. public new string text312 = "Hard";
  393. public new string text313 = "ArrowWeight";
  394. public new string text314 = "{0}Gram";
  395. //设备校准页面
  396. public new string text76 = "ResetView";
  397. public new string text77 = "Back";
  398. public new string text78 = "Next";
  399. public new string text79 = "Complete";
  400. public new string text80 = "ResetView";
  401. public new string text81 = "Point the solid bow to the front, and then click \nthe angle of view to return to the front.";
  402. public new string text82 = "Calibrate";
  403. public new string text83 = "Stop";
  404. public new string text84 = "Try to rotate the module at multiple angles until \nmultiple points in the three quadrants of XYZ form a circle.";
  405. public new string text85 = "Calibrate";
  406. public new string text86 = "During calibration, the aiming module needs to be placed on the desktop.";
  407. public new string text116 = "Redo";
  408. public new string text120 = "The calibration effect is not ideal, please recalibrate!";
  409. public new string text121 = "Cancel";
  410. //游戏场景通用UI信息
  411. public new string text200 = "Guide";
  412. public new string text201 = "Scope";
  413. public new string text202 = "Acc";
  414. public new string text203 = "ResetView";
  415. public new string text204 = "View Target";
  416. public new string text205 = "Close";
  417. // 游戏规则
  418. public new string text1000 = "Shoot as many arrows as you can at a fixed time.";
  419. public new string text1001 = "The total number of rings gradually increased, \nchallenging their own records.";
  420. public new string text2000 = "Two people arched in turn, using the rules of the Olympic Games PK.";
  421. public new string text2001 = "The maximum number of games is 5, 3 arrows in each game, \nshooting arrows alternately.";
  422. public new string text2002 = "The winner will get 2 points and 1 draw each. \nThe loser will not get points.";
  423. public new string text2003 = "If the first 6 points win, \nif it is a draw at the end of the 5 innings, \nthe game will be decided by one arrow.";
  424. //道具名称
  425. public new string text101000 = "{0}X Mirrors";
  426. public new string text101001 = "{0}X Shoot";
  427. // 道具介绍
  428. public new string text111000 = "When shooting, the sight distance is enlarged by {0} times.";
  429. public new string text111001 = "In archery, the speed increases by {0} times.";
  430. //设备名称
  431. public new string text201000 = "18 Pound Bow";
  432. public new string text201001 = "25 Pound Bow";
  433. public new string text201002 = "Carbon Giber Arrow";
  434. // 设备介绍
  435. public new string text211000 = "Special bow for Olympic Games.";
  436. public new string text211001 = "Special bow for Olympic Games.";
  437. public new string text211002 = "Special competition arrow for Olympic Games.";
  438. }