查看: 3732|回复: 3

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

[复制链接]
梦石
0
星屑
49
在线时间
200 小时
注册时间
2014-7-17
回帖
372
发表于 2014-11-1 14:06:13 | 显示全部楼层 |阅读模式

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

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

×
简洁字幕脚本

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

[pre lang="ruby" line="1"]#=============================================================================
# ■ 简洁字幕 ver 1.0 (Scene_Credit)
#=============================================================================
# 作者:羁绊的守望者 (66RPG ID)
#=============================================================================
class Scene_Credit
TEXT = <<END_CREDIT
静夜思
[唐]李白
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。

END_CREDIT
end

class Window_Credit < Window_Base
  def initialize(text)
    super(0,480,640,128 * text.size)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    for i in 0...text.size
      self.contents.draw_text(0,i*32,640,32,text,1)
    end
  end
end

class Scene_Credit
  def main
    Audio.bgm_play("Audio/BGM/End Credits", 100, 100)
    @sprite = Plane.new
    @sprite.bitmap = Bitmap.new("Graphics/Panoramas/001-Sky01")
    @return_scene = Scene_Title.new
    @text = TEXT.split("\n")
    @window_credit = Window_Credit.new(@text)
    y = 0
    Graphics.transition
    while y != @window_credit.height
      y += 2
      @window_credit.y -= 2
      Graphics.update
    end
    @window_credit.dispose
    @sprite.bitmap.dispose
    @sprite.dispose
    Graphics.freeze
    $scene = @return_scene
  end
end  [/pre]

知其然,而不欲知其所以然,耻也!
梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 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的神奇作用)
↓瞎改的,最好不要用
[pre lang="Ruby"]class Scene_Credit
TEXT = <<END_CREDIT
静夜思
[唐]李白
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。

END_CREDIT
end
class Sprite_Credit < Sprite
  def initialize(text, viewport = nil)
    super(viewport)
    # 根据显示区域的不同改变那个w
    w = 640
    self.bitmap = Bitmap.new(w, text.size == 0 ? 1 : text.size * 32)
    refresh
  end
  def refresh
    for i in 0...text.size
      self.bitmap.draw_text(0,i*32,640,32,text, 1)
    end
  end
end

class Scene_Credit
   def main
    Audio.bgm_play("Audio/BGM/End Credits", 100, 100)
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title("001-Title01")
    @view = Viewport.new(50, 50, 400, 200)
    @sprite_credit = Sprite_Credit.new(TEXT.split("\n"), @view)
    @sprite_credit.y = @view.rect.height
    Graphics.transition
    while @view.oy <= @sprite_credit.bitmap.height + @view.rect.height
      @view.oy += 2
      Graphics.update
    end
    Graphics.freeze
    @sprite_credit.dispose
    @view.dispose
    @sprite.bitmap.dispose
    @sprite.dispose
    $scene = Scene_Title.new
  end
end[/pre]

点评

我好像突然记起来了,是有这么回事  发表于 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
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 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
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 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
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部