TextAutoLanguage.cs 21 KB

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