sibulee 发表于 2006-11-21 16:35:27

[教程02]在Ren'Py中显文本(基本编)

就AVG来说,最重要的组成部分莫过于文本。情节的演绎,角色的丰满,都需要文字来渲染。同时,文本显示方式的选择会对作品或多或少地造成一定影响。本教程将讲述几种常用的文本表现方式。

==============================================

1。叙述式。 这是最简单的一种。通常用于描述性的语句或用来表现主视角的心理活动。
http://pic.tiexue.net/pics/2006_11_21_12232_4312232.jpg
用法:只要给文本加上双引号即可。
"这是最简单的文本显示。"

2。角色式。 这是比较常用的一种,即在文本前会显示角色的姓名标签。通常用于对话。
http://pic.tiexue.net/pics/2006_11_21_12233_4312233.jpg
用法:
1> 先在初始块中定义一个角色对象。
init:
    $ js = Character(u'角色', color='#B06500')
如上所示,我们定义了js这个角色对象。姓名为“角色”,颜色十六进制代码为B06500,要在加个#号。(注:因为是中文,所以要加上前缀u,表明是Unicode)

2> 然后在脚本中这样使用:
js "这是带有角色标签的文本。"如上,只要先输入js,然后空一格,再输入带双引号的文本即可。很方便吧。

3。双窗口式。这也是一种比较常见且流行的款式。
http://pic.tiexue.net/pics/2006_11_21_12234_4312234.jpg
用法:
1> 先在初始块中定义一个双窗口角色对象。
init:
    $ js2 = Character(u'双窗口角色', color='#B06500', show_two_window=True)
如上,和角色式差不多,只是后面带了一个show_two_window的参数,且取值为True。

2> 在脚本中的用法和角色式一样:
js2 "这就是双窗口角色标签。"

4。头像式。这算一种比较有效率的方式,可以减少立绘的数量。
http://pic.tiexue.net/pics/2006_11_21_12242_4312242.jpg
用法:
1> 老规矩,先在初始块中定义一个头像角色对象。
init:
    $ js_side1 = Character(u'头像角色一',
    color = 'B06500',
    window_left_margin = 150,
    show_side_image = Image("face.jpg", xalign = 0.0, ypos = 455))
注意一下这里的语句写法。当语句比较长,带的参数比较多时,基于易读的原则,劳驾多用几个物理行来分开,不要写成串串烧的德性。还有,菜鸟要注意一下括号的配对性。
看起来有点复杂,对吧。其实也还是简单。姓名和颜色和前面一样,无非是多了几个参数而已,下面逐一讲解:
window_left_margin = 150
如同字面意思,表明对话框距窗口左边缘为150像素,留出头像的空间。
show_side_image = Image("face.jpg", xalign = 0.0, ypos = 455)
show_side_image同字面意思。
Image是个调用的图像的语句。后面跟了3个参数。
"face.jpg"是图像的文件名,因为是放在game目录下,所以直接用文件名即可,不需指明路径。
xalign = 0.0 指定图像在x轴上的对齐基点。0.0即以左边为基点,0.5以中间,1.0以右边。当然,如果你愿意,你可以用任何小数。。。
ypos = 455 指定图像在Y方向上的位置。ypos = 455表明从窗口左上角(0,0)开始算起,向下数第455个像素。然后以图像的对齐基点(见上)从该点为开始描绘图像。

2> 在脚本中的用法还是一样简单:
js_side1 "这是头像模式。"

当然,头像也可以放在右边,对话框也可以放在屏幕上方,颜色也可以更改,只需要改变几个参数即可。这样是不是有点机器人大战的感觉?你也可以用这种方法来表明不同立场的人物。(代码参看附带的范例。)
http://pic.tiexue.net/pics/2006_11_21_12243_4312243.jpg

5。小说式。这应该算是正统的电子小说吧。目前貌似流行这种画中画的文本框。
http://pic.tiexue.net/pics/2006_11_21_12244_4312244.jpg
用法:
1> 先定义NVL角色。
init:
    $ js_nvl = NVLCharacter(u'小说角色', color="#B06500")

然后设置NVL样式。
init:
    $ style.nvl_label.minwidth = 150
    $ style.nvl_label.text_align = 1.0   
    $ style.nvl_window.background = "#0008"
    $ style.nvl_window.yfill = True
    $ style.nvl_window.xfill = True
    $ style.nvl_window.xmargin = 20
    $ style.nvl_window.ymargin = 20
    $ style.nvl_window.xpadding = 40
    $ style.nvl_window.ypadding = 40
    $ style.nvl_vbox.box_spacing = 10
唔,同字面意思,不赘述。如有不明,参见附带范例的注释。

2> 在脚本中的用法还是一样简单。
js_nvl "这就是小说模式。"
js_nvl "这是一句填充用的废话。这也是一句填充用的废话。这又是一句填充用的废话。这还是一句填充用的废话。"

3> 最后,别忘了用$ nvl_clear()清屏,也就是翻页。

6。因文件稍大,请到官网下载本教程所用范例。链接见下。
再哆嗦一句,使用方法:
解压到基本目录,运行renpy.exe==>Select Project==>text
然后Launch
注意:目录结构不能超过两层,否则前端会找不到文件。

7。Okay。本次教程结束。应该比较详细了。。。囧TZ

==============================================
参见:官网教程

CountD 发表于 2006-11-21 16:58:01

真勤奋~

Miliardo 发表于 2006-11-22 19:45:35

小复杂(对于Programming的外行)……不过效果还好……

建议使用其他的素材~

demen 发表于 2006-11-28 01:27:12

请问一下 :
整个画面的坐标是以最左上角为零点?→向为正X ,↓向为正Y?
另外显示图片的坐标是否以该图片的左上角为对齐点?

感谢解答了~

sibulee 发表于 2006-11-28 10:06:26

引用第3楼demen于2006-11-28 01:27发表的:
请问一下 :
整个画面的坐标是以最左上角为零点?→向为正X ,↓向为正Y?
另外显示图片的坐标是否以该图片的左上角为对齐点?

感谢解答了~

正解。。。

因为在该例中,头像,也就是图像的x座标为0,也就是缺省值,所以没有在脚本中输入。你可以加入xpos = XXX, 这样图像可以显示在屏幕上任何位置。

同样,在本例中,对图像对齐的y基点为缺省值,也就是0,所有也省略。你也可以加入yalign = 0.0 或 0.5 或 1.0。 比如说,xalign = 0.5, yalign = 0.5,那么图像就以中心为对齐基点。如果xalign = 1.0, yalign = 1.0,则以右下角为对齐基点。

更详细的内容请参见官网reference。。。
该内容目前尚未汉化。。。

Miliardo 发表于 2006-11-28 21:02:33

话说RP的代码是合法的Python源码么?还是专用的脚本格式?
页: [1]
查看完整版本: [教程02]在Ren'Py中显文本(基本编)