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

Project1

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

[原创发布] 【脚本】简洁字幕 ver 1.0

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
200 小时
注册时间
2014-7-17
帖子
410
跳转到指定楼层
1
发表于 2014-11-1 14:06:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
简洁字幕脚本

今天找了字幕脚本,结果全都出错,无奈只好自己动手了。
这个脚本直接放进去不会生效,需要进行修改。
默认播放的音乐名是End Credits
显示的背景图是远景里的001-Sky01
召唤字幕的方法是$scene = Scene_Credit.new
默认返回标题画面
具体看脚本里的改吧
有空我会补上一些相关教程

RUBY 代码复制
  1. #=============================================================================
  2. # ■ 简洁字幕 ver 1.0 (Scene_Credit)
  3. #=============================================================================
  4. # 作者:羁绊的守望者 (66RPG ID)
  5. #=============================================================================
  6. class Scene_Credit
  7. TEXT = <<END_CREDIT
  8. 静夜思
  9. []李白
  10. 床前明月光,
  11. 疑是地上霜。
  12. 举头望明月,
  13. 低头思故乡。
  14.  
  15. END_CREDIT
  16. end
  17.  
  18. class Window_Credit < Window_Base
  19.   def initialize(text)
  20.     super(0,480,640,128 * text.size)
  21.     self.contents = Bitmap.new(width - 32, height - 32)
  22.     self.opacity = 0
  23.     for i in 0...text.size
  24.       self.contents.draw_text(0,i*32,640,32,text[i],1)
  25.     end
  26.   end
  27. end
  28.  
  29. class Scene_Credit
  30.   def main
  31.     Audio.bgm_play("Audio/BGM/End Credits", 100, 100)
  32.     @sprite = Plane.new
  33.     @sprite.bitmap = Bitmap.new("Graphics/Panoramas/001-Sky01")
  34.     @return_scene = Scene_Title.new
  35.     @text = TEXT.split("\n")
  36.     @window_credit = Window_Credit.new(@text)
  37.     y = 0
  38.     Graphics.transition
  39.     while y != @window_credit.height
  40.       y += 2
  41.       @window_credit.y -= 2
  42.       Graphics.update
  43.     end
  44.     @window_credit.dispose
  45.     @sprite.bitmap.dispose
  46.     @sprite.dispose
  47.     Graphics.freeze
  48.     $scene = @return_scene
  49.   end
  50. end

知其然,而不欲知其所以然,耻也!

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

来自 4楼
发表于 2014-11-1 21:36:19 | 只看该作者
本帖最后由 RyanBern 于 2014-11-2 20:44 编辑

可能出现的问题:
1.如果TEXT为空会发生RGSSError
几个个人方面的建议:
1.变量还可以精简下,不必用到的变量目前发现有@return_scene和局部变量y(控制那个循环可以用@sprite.y控制)。
2.为什么要用平面来生成图形呢?是为了能够无缝拼接吗?其实很少有人使用Panorama里面的图片当背景,所以还是单纯的Sprite为好。
3.用Window作为载体看起来好不习惯,建议使用Sprite+Viewport,好处是结构简单,而且可以限制字幕在屏幕上的区域(Viewport的神奇作用)
↓瞎改的,最好不要用
RUBY 代码复制
  1. class Scene_Credit
  2. TEXT = <<END_CREDIT
  3. 静夜思
  4. []李白
  5. 床前明月光,
  6. 疑是地上霜。
  7. 举头望明月,
  8. 低头思故乡。
  9.  
  10. END_CREDIT
  11. end
  12. class Sprite_Credit < Sprite
  13.   def initialize(text, viewport = nil)
  14.     super(viewport)
  15.     # 根据显示区域的不同改变那个w
  16.     w = 640
  17.     self.bitmap = Bitmap.new(w, text.size == 0 ? 1 : text.size * 32)
  18.     refresh
  19.   end
  20.   def refresh
  21.     for i in 0...text.size
  22.       self.bitmap.draw_text(0,i*32,640,32,text[i], 1)
  23.     end
  24.   end
  25. end
  26.  
  27. class Scene_Credit
  28.    def main
  29.     Audio.bgm_play("Audio/BGM/End Credits", 100, 100)
  30.     @sprite = Sprite.new
  31.     @sprite.bitmap = RPG::Cache.title("001-Title01")
  32.     @view = Viewport.new(50, 50, 400, 200)
  33.     @sprite_credit = Sprite_Credit.new(TEXT.split("\n"), @view)
  34.     @sprite_credit.y = @view.rect.height
  35.     Graphics.transition
  36.     while @view.oy <= @sprite_credit.bitmap.height + @view.rect.height
  37.       @view.oy += 2
  38.       Graphics.update
  39.     end
  40.     Graphics.freeze
  41.     @sprite_credit.dispose
  42.     @view.dispose
  43.     @sprite.bitmap.dispose
  44.     @sprite.dispose
  45.     $scene = Scene_Title.new
  46.   end
  47. end

点评

我好像突然记起来了,是有这么回事  发表于 2014-11-2 12:25
其实 window 也有 viewport ……  发表于 2014-11-2 07:36
好吧,我理解错误了…… 版主大人指的应该是不使用窗口吧……  发表于 2014-11-1 22:02
求问how to不用BItmap达到draw_text的效果?  发表于 2014-11-1 22:01
可以尝试用Viewport,因为有时候希望字幕出现的区域有限制(主要是上下限制)。Window用多了确实会产生依赖,不过想想确实可以直接把字描绘到Sprite上  发表于 2014-11-1 21:54
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9275
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2014-11-1 14:35:07 | 只看该作者
来张图吧···这个一般用在什么地方呢···

点评

怎么和LZ的签名类似?!why???  发表于 2014-11-1 21:37

评分

参与人数 1星屑 +20 收起 理由
永燃的狂炎 + 20 比起LZ我更想给你经验值。

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2014-11-1 15:17:22 | 只看该作者
咱觉得还是喵呜喵游戏里,ED的播放lrc比较良心

点评

表示完全看不懂你们在说什么,大触的世界我这个渣渣果然不懂 - -  发表于 2014-11-1 21:15
总觉得和音乐文件的字节数有关……  发表于 2014-11-1 21:07
……但是失败了  发表于 2014-11-1 21:04
所以主要的问题还是如何获取时间,或者pos和BGM间的对应关系究竟是怎样的……之前还干过获取BGM的播放时长和结尾处的pos来确认pos与时间的关系的事  发表于 2014-11-1 21:03
所以说,我想问的就是,只能自己试出那个固定位置的pos么  发表于 2014-11-1 21:03
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 15:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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