设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

英文rpgmakermv游戏汉化怎么解决换行问题

查看数: 255 | 评论数: 4 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-9-12 21:51

正文摘要:

本帖最后由 醋酸铅 于 2024-9-12 21:52 编辑 最近在汉化一个英文RPG,然后发现文本改成中文以后会溢出文本框, 上网找了可以换行中文字符的YEP_MessageCore以后,发现换行效果并不好, 具体不好的地方有: 1.把行尾过 ...

回复

utunnels 发表于 2024-9-13 16:34:33
也可以试试这个版本,据说是根据文本框的换行规则来写的
https://forums.rpgmakerweb.com/i ... v3-0-is-out.139627/
utunnels 发表于 2024-9-13 16:04:54
本帖最后由 utunnels 于 2024-9-13 16:12 编辑

比如做个插件放在YEP后面
  1. function isChineseWordBreak(textState){
  2.   return true;
  3. }

  4. function charMode(c){
  5.   var marks = '\uff0c\u3002\uff1a\u3001\uff1b\u00b7';
  6.   var newMode = {};
  7.   newMode.isM = marks.contains(c);
  8.   newMode.isC = (c.charCodeAt(0)>256 && !newMode.isM);
  9.   newMode.isE = c.charCodeAt(0)<256;
  10.   newMode.isS = /\s/.test(c);
  11.   return newMode;
  12. }

  13. function findNextSpace(textState){
  14.   var mode = {isNew:true};
  15.   for(var i=textState.index;i<textState.text.length;i++){
  16.     var newMode = charMode(textState.text[i]);
  17.     if(!mode.isNew){
  18.       if(newMode.isS) return i;
  19.       if(newMode.isC) return i;
  20.       if(newMode.isE && !mode.isE) return i;
  21.     }
  22.     mode = newMode;
  23.   }
  24.   return -1;
  25. }

  26. Window_Base.prototype.checkWordWrap = function(textState) {
  27.     if (!textState) return false;
  28.     if (!this._wordWrap) return false;
  29.     var size = 0;
  30.     if (isChineseWordBreak(textState)) {
  31.       var nextSpace = findNextSpace(textState);
  32.       var nextBreak = textState.text.indexOf('\n', textState.index + 1);
  33.       if (nextSpace < 0) nextSpace = textState.text.length + 1;
  34.       if (nextBreak > 0) nextSpace = Math.min(nextSpace, nextBreak);
  35.       var word = textState.text.substring(textState.index, nextSpace);
  36.       size = this.textWidthExCheck(word);console.log(word,size);
  37.     }
  38.     var ww = (size + textState.x > this.wordwrapWidth());
  39.     if(ww) textState.index--;
  40.     return ww;
  41. };
复制代码
utunnels 发表于 2024-9-13 16:00:11
只能吧YEP改改了,专门给中文写一套规则。
或者找个排版工具排完了再复制进去
百里_飞柳 发表于 2024-9-13 12:16:50
同想知道,除了不断循环判定再动态调整位置外
插眼学习下,好更新到我的对话框里(x)
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 04:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表