Project1

标题: 【脚本】简洁字幕 ver 1.0 [打印本页]

作者: 羁绊的守望者    时间: 2014-11-1 14:06
标题: 【脚本】简洁字幕 ver 1.0
简洁字幕脚本

今天找了字幕脚本,结果全都出错,无奈只好自己动手了。
这个脚本直接放进去不会生效,需要进行修改。
默认播放的音乐名是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

作者: chd114    时间: 2014-11-1 14:35
来张图吧···这个一般用在什么地方呢···
作者: taroxd    时间: 2014-11-1 15:17
咱觉得还是喵呜喵游戏里,ED的播放lrc比较良心
作者: RyanBern    时间: 2014-11-1 21:36
本帖最后由 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





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