Project1

标题: 有没有办法一次性编辑多个语言在游戏中进行选择? [打印本页]

作者: hl628651    时间: 2017-2-14 15:32
标题: 有没有办法一次性编辑多个语言在游戏中进行选择?
比如,日语,英语,汉语。
作者: 刺夜之枪    时间: 2017-2-14 16:28
吓死我惹,点进帖子前我以为我看到的是 “ 有没有办法一次性编译多个语言在游戏中进行选择”, 吓得我浑身一抽,吓得我大叫吵醒室友。
吓得我赶紧点进来开看看有没有什么答案。原来虚惊一场。

好吧,言归正传,我以前见过进入游戏前选择的插件,6R有。
游戏中选择的话,现成插件没有见过,但是应该可以很快写出来。
作者: raketenfaust02    时间: 2017-2-15 13:50
本帖最后由 raketenfaust02 于 2017-2-15 13:55 编辑



多语种插件,因为是自做自用的所以不太讲究,凑合用吧。
用变量0001储存当前语种,插件预设为1=中文,2=日文,其他=英文



  1. Bitmap.prototype.drawText = function(text, x, y, maxWidth, lineHeight, align) {
  2.     // Note: Firefox has a bug with textBaseline: Bug 737852
  3.     //       So we use 'alphabetic' here.
  4.     if (text !== undefined) {
  5.         var tx = x;
  6.         var ty = y + lineHeight - (lineHeight - this.fontSize * 0.7) / 2;
  7.         var context = this._context;
  8.         var alpha = context.globalAlpha;
  9.         maxWidth = maxWidth || 0xffffffff;
  10.         text = languageControl(text);                //添加多语种对应
  11.         if (align === 'center') {
  12.             tx += maxWidth / 2;
  13.         }
  14.         if (align === 'right') {
  15.             tx += maxWidth;
  16.         }
  17.         context.save();
  18.         context.font = this._makeFontNameText();
  19.         context.textAlign = align;
  20.         context.textBaseline = 'alphabetic';
  21.         context.globalAlpha = 1;
  22.         this._drawTextOutline(text, tx, ty, maxWidth);
  23.         context.globalAlpha = alpha;
  24.         this._drawTextBody(text, tx, ty, maxWidth);
  25.         context.restore();
  26.         this._setDirty();
  27.     }
  28. };

  29. //这一段是对应YEP插件的,如不用YEP可以注掉
  30. Yanfly.Core.Bitmap_drawText = Bitmap.prototype.drawText;
  31. Bitmap.prototype.drawText = function(text, x, y, mW, l, align) {
  32.     x = Math.floor(x);
  33.     y = Math.floor(y);
  34.     mW = Math.floor(mW);
  35.     l = Math.floor(l);
  36.     text = languageControl(text);                //多语种对应
  37.     Yanfly.Core.Bitmap_drawText.call(this, text, x, y, mW, l, align);
  38. };

  39. Game_Message.prototype.add = function(text) {
  40.     text = languageControl(text);                //添加多语种对应
  41.     this._texts.push(text);
  42. };

  43. //检测语种
  44. languageControl = function(text){
  45.     language = $gameVariables.value(1);     //用1号变量储存当前语种,可根据需要自行调整
  46.     string = text;

  47. //变量对应语言包,可自行添加
  48.         switch(language)
  49.         {
  50.                 case 1:
  51.                 Table = StringTable_CNS;
  52.                   break;
  53.                 case 2:
  54.                 Table = StringTable_JP;
  55.                   break;
  56.                 default:
  57.                 Table = StringTable_EN
  58.         }
  59.                 if (Table[string] != null){
  60.                         text = Table[string];
  61.         }
  62.         return text;
  63. };

  64. //以下为语言包内容,可自行添加
  65. //英语:
  66. StringTable_EN = {
  67. "New Game" :  "New Game",
  68. "Continue"  :  "Continue",
  69. "Options"  :  "Options",
  70. "Status" : "Status",
  71. "Item" : "Item",
  72. "Skill" : "Skill",
  73. "Equip" : "Equip",
  74. "Save" : "Save",
  75. "Formation" : "Formation",
  76. "Game End" : "Game End",
  77. };

  78. //简体中文:
  79. StringTable_CNS = {
  80. "New Game" :  "新游戏",
  81. "Continue"  :  "继续游戏",
  82. "Options"  :  "系统",
  83. "Status" : "状态",
  84. "Item" : "道具",
  85. "Skill" : "技能",
  86. "Equip" : "装备",
  87. "Save" : "存档",
  88. "Formation" : "队形",
  89. "Game End" : "结束",
  90. };

  91. //日文:
  92. StringTable_JP = {
  93. "New Game" :  "はじめから",
  94. "Continue"  :  "つづきから",
  95. "Options"  :  "オプション",
  96. "Status" : "ステータス",
  97. "Item" : "アイテム",
  98. "Skill" : "スキル",
  99. "Equip" : "装備",
  100. "Save" : "セーフ",
  101. "Formation" : "編成",
  102. "Game End" : "終了",
  103. };
复制代码

作者: walf_man    时间: 2017-2-15 18:05
很好的解决方案,对话什么的只需要扩充就好了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1