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

Project1

 找回密码
 注册会员
搜索

制作多语言支持插件时遇到一些技术问题

查看数: 3745 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-7-20 19:52

正文摘要:

插件的基本思路是用全局变量记录当前语言,用编辑器中的字符串做索引,在DrawText函数里根据当前语言从json里调用对应的显示用字符串。 菜单显示一切正常,但剧情对话完全不能正常显示。 排查之后发现:剧情对话里 ...

回复

tseyik 发表于 2016-7-21 09:44:21
External Text
範本
https://yunpan.cn/cBiwYhXChCyv9  访问密码 0d63

点评

谢谢!  发表于 2016-7-21 11:20
raketenfaust02 发表于 2016-7-21 02:12:45
本帖最后由 raketenfaust02 于 2016-7-21 03:02 编辑
汪汪 发表于 2016-7-21 01:03
请问有什么方法可以让对话里的全部内容被视为一个完整的字符串
对话的全部内容确实是字符串,但这个字符串 ...



一定程度上解决了

我在Game_Message.prototype.add里也调用了一遍判断语言的函数,现在对话可以正常转换了
不过还有其他很多地方得一个一个手动添加,比如选项,看来只能一个一个穷举了。

汪汪 发表于 2016-7-21 01:03:12
本帖最后由 汪汪 于 2016-7-21 02:06 编辑

请问有什么方法可以让对话里的全部内容被视为一个完整的字符串
对话的全部内容确实是字符串,但这个字符串在被绘制时使用的
是 drawTextEx ,通过这个方法处理后,对每一个字符使用 drawText 方法,所以导致了上面的问题.
或许你可以在这里改
//添加
Game_Message.prototype.add = function(text) {
    this._texts.push(text);
};


对于显示文本,感觉还是用事件分歧比较好,当然你也可以用脚本来代替条件分歧,


JAVASCRIPT 代码复制
  1. $lgs = ["c","ja","t"]
  2. $lg = "c"
  3. $mlg = "c"
  4.  
  5. //添加
  6. Game_Message.prototype.add = function(text) {
  7.         var push = true
  8.         var i1 = text.indexOf("[l=")
  9.         if(i1>=0){
  10.                 var text = text.slice(i1+3)
  11.                 i1 = text.indexOf("]")
  12.                 var l = text.slice(0,i1)
  13.                 text = text.slice(i1+1)
  14.                 if($lgs.indexOf(l) >= 0){
  15.                         $lg = l
  16.                 }
  17.                 if(text === ""){
  18.                         push = false
  19.                 }
  20.         }
  21.         if($mlg !== $lg ){
  22.                 push = false
  23.         }
  24.         //文本组 添加(文本)
  25.         if(push){
  26.             this._texts.push(text);
  27.         }
  28. };


点评

是的。。。万一要他人帮忙翻译。。没独立文件咋行。。总不能整个工程直接丢出去?  发表于 2020-8-21 00:45
不不不,把所有文本在excel里罗列好,翻译完直接导出成json就行了。我之前做商业项目都是这个方法  发表于 2016-7-21 11:20
把文本集中在一个json里不方便制作吧, 而且翻译的话,因为句子长度不一样,也是很困扰的吧。  发表于 2016-7-21 07:08
根本目的还是要把所有文本内容集中在一个json里以便管理  发表于 2016-7-21 02:30
用事件没法批量翻译,更新的时候也非常容易遗漏。无论增加语种还是更新内容都太浪费工作量了。  发表于 2016-7-21 02:29
tseyik 发表于 2016-7-20 21:03:49
本帖最后由 tseyik 于 2016-7-20 21:08 编辑

這個有数個做了
你可參考一下

https://github.com/yamachan/jgss ... 1_Option_EnJa.ja.md

点评

https://en.wikipedia.org/wiki/JSON#Samples  发表于 2016-7-21 09:33
External Text  发表于 2016-7-21 09:31
有没有啥关键字,我去查查  发表于 2016-7-21 00:04
对话有個外語插件,是個英文插件,要找一找  发表于 2016-7-20 22:18
这个我看了,他解决对话问题的方法是用事件……  发表于 2016-7-20 21:20
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-16 09:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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