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

Project1

 找回密码
 注册会员
搜索
查看: 1469|回复: 4
打印 上一主题 下一主题

请问一下游戏里的默认字体能不能改变的?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
18 小时
注册时间
2007-2-5
帖子
40
跳转到指定楼层
1
发表于 2009-1-29 12:39:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如题?
此贴于 2009-1-29 17:38:00 被版主redant提醒,请楼主看到后对本贴做出回应。
版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

梦石
0
星屑
55
在线时间
18 小时
注册时间
2007-2-5
帖子
40
2
 楼主| 发表于 2009-1-29 12:46:51 | 只看该作者
我指的是自己下载的字体,一般系统里没有的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
75 小时
注册时间
2007-6-25
帖子
2276

开拓者第1届Title华丽大赛亚军

3
发表于 2009-1-29 15:00:41 | 只看该作者
不厚道地复制粘贴了了= =

http://rpg.blue/web/htm/news643.htm




准备工作做完,下面就是正式来解读脚本了。首先来读最初的一组脚本:Main。
有的人可能会奇怪,Main不是放在RGSS最下面的么,怎么变成最初的脚本了?难道RMXP是从下往上执行的?实际上,RMXP确实是从上往下读入Main及其之前全部脚本的(这也就是都把不用的脚本扔到Main下方的原因),但Main以上的脚本内容全都是在定义类和方法,并没有开始任何实质性操作。
不算注释的话,默认的Main一共是12行脚本,可说是默认脚本中最短的一组;但它的跨度却很大,整个RM游戏的运行自始至终是在这个Main中循环着的,所以也可以说它是所有脚本中最长的一组。下面我们来看它的具体内容:

begin
Font.default_name = (["黑体"])
Graphics.freeze
$scene = Scene_Title.new
while $scene != nil
  $scene.main
end
Graphics.transition(20)
rescue Errno::ENOENT
filename = $!.message.sub("No such file or directory - ", "")
print("找不到文件 #{filename}。 ")
end

begin是程序的开始,而下面的rescue Errno::ENOENT则是捕获错误信息。Begin~rescue~end语句可以看作是一个条件分歧,当没有错误时,执行begin下的部分;而当捕获到错误时,执行rescue下面的部分。也就是说,当游戏正常的运行着时,用到过的只有begin和rescue中间的7行。Rescue下面的部分暂时54掉,一个能完整流畅运行的游戏应该是用不着那里才好。

Font.default_name = (["黑体"])是设定游戏默认字体,很多人下了游戏但对话却没有字,那就是电脑中没有这行里设定的字体导致的。除了安装字体外,对于解密游戏还可以用更改这里的字体名的方法,使文字正常显示。(比如范例游戏Alestian Story用的MS细明体一般人电脑里都不会有,其实将这里的字体名改成“Arial”就可以正常显示了) 如果你是游戏制作者,担心玩家因为缺少字体无法正常看对话,可以将这行改成这样:
Font.default_name = (["黑体",”隶书”,”宋体”])
当玩家电脑上找不到黑体时,会用隶书;没有隶书时,用宋体显示。
(注意字体名一定要填完整,比如“楷体”的全名是“楷体_GB2312”,光打一个“楷体”是无法识别的。)


在游戏的压缩包里记得带上你所用的字体`
新浪微博~求粉ING~
  怕麻烦~不擅表达~希望永远是萝莉ING~最擅长浪费时间~^-^~扭头~ →_→ ~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

随缘

梦石
0
星屑
55
在线时间
12 小时
注册时间
2007-12-16
帖子
671
4
发表于 2009-1-29 23:33:48 | 只看该作者
dir = Win32API.new('kernel32','GetSystemDirectory','p,l','l')
dir_str = " " * 256
dir.call(dir_str,255)
dir_str = dir_str.split('system')[0]

font_name = "fzcqjw.ttf"
font_chn_name = "方正粗倩简体"

if FileTest.exist?(font_name)
copy = Win32API.new('kernel32',"CopyFileA",'p,p,l','')
copy.call(font_name, "#{dir_str}Fonts/#{font_name}",0)
font = Win32API.new('gdi32','AddFontResourceA','p','l')
sendmsg = Win32API.new('user32','SendMessageA','l,l,l,l','l')
unless Font.exist?(font_chn_name)
   font.call(font_name)
   sendmsg.call(65535,29,0,0)
   retry
end
end

http://rpg.blue/web/htm/news650.htm
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
论坛:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
18 小时
注册时间
2007-2-5
帖子
40
5
 楼主| 发表于 2009-1-30 03:04:42 | 只看该作者
感谢感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-1-18 15:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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