找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1133|回复: 7

[经验] 00_style的三种文本定义方式——screen.rpy

[复制链接]
发表于 2023-2-16 11:08:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 歳一 于 2023-2-17 20:31 编辑

00
突然发现了第三种定义方式
论坛里没有关于原文档的内容吗,那我来更新一点吧,不过这代码粘贴的也太丑了吧,是关于screen.rpy的:

需要看结论的直接翻到最下面
首先进入screen.rpy,我们就能看到第一个这样定义的样式,对于gui.text_properties(kind=None, accent=False)的作用就不赘述了
(它定义了一个字典)


[RenPy] 纯文本查看 复制代码
style default:
    properties gui.text_properties()
    language gui.language



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
现有如下定义,拿其中的size 属性举个例子,两者区别是size 大小,前者是100,后者是200,原字体要小很多。


[RenPy] 纯文本查看 复制代码
# 第一种
###########################################################
## 定义了test字典中size的属性
define gui.test_text_size = gui.preference("test_text", 100)
## 定义了test字典
style test:
    properties gui.text_properties("test", accent = True)


# 第二种
###########################################################
##
style test_text:
    size 200
    font gui.interface_text_font

###########################################################



###########################################################
1在屏幕上显示这两种字体。
[RenPy] 纯文本查看 复制代码
            text "test_text" style "test_text"
            text "test" style "test"



QQ图片20230216104531.jpg

                               
登录/注册后可看大图
显然是不一样的,两者都可以通过后缀style来调用;


2)第二种可行的方法,但第一种不能用style_prefix(这涉及到继承父类,以后看情况说明)。
[RenPy] 纯文本查看 复制代码
            style_prefix "test"
            text "test_text"
            text "test_text"
            text "test" style "test"



QQ图片20230216104540.jpg
两者都有效:优先级更高的是加后缀的方法,而第二种可以全局声明。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
到这里,是不是觉得第二种用法更多?其实忽略了一个问题,
第一种定义了一个字典,这意味着可以随时更改其值:
[RenPy] 纯文本查看 复制代码
define gui.test_text_size = gui.preference("test_text", 100)

第一种随时都可以更改属性值,第二种不行
当然,容易想到可以对第二种声明一个变量,通过修改变量来更改,但其实并不可行(我没试出简单的方法);
退一步,即使实现了该变量声明,可是对于大量的style和属性,如果都通过变量声明那就太繁琐了。

第三种:
没错存不存在完美的解决方案,即是字典,又可以通过style_prefix来声明?
[RenPy] 纯文本查看 复制代码
## 第三种
##########################################################
## 定义了test_text字典中size的属性
define gui.test_text_text_size = gui.preference("test_text_text", 200)
style test_text:
    properties gui.text_properties("test_text", accent = True)


这样就有点奇怪了,因为名称问题,其对应的属性为gui.test_text_text_properties,没错两个text,
那这样声明renpy不会报错吗?答案是不会:
[RenPy] 纯文本查看 复制代码
            style_prefix "test" #第三种
            text "test_text"
            text "test_text"
            text "test" style "test" #第一种


Snipaste_2023-02-17_08-43-28.png
前面两行为第三种的大小(已经将第二种注释掉了,没有重叠),只不过这样命名的方法很奇怪
但是确实实现了两个的结合



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
结论:
第一种:不能通过全局声明来实现大量文本应用,但是便于作者与用户修改属性值;
第二种:可以全局声明,但是不能方便修改属性值;
第三种:结合前两种的优势,但是其声明变得奇怪

建议:
当出现多行需要声明时,推荐使用第二种;
当出现需要经常更改其属性值的,推荐第一种声明(可以发现,源文件已经把便于修改的放在了gui.rpy中)。
第三种固然完美,但是因为它偏奇怪的声明,以及为什么renpy能够继续识别出这种方法还有待研究
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////






有疑问或问题请指出,
觉得可以继续更新的评论区扣01

00



QQ图片20230216104536.png
发表于 2023-2-18 02:47:32 | 显示全部楼层
歳一 发表于 2023-2-17 09:43
完了,我的表达能力已经连版主都看不懂了(都很糟糕),
给点建议吧,是我的意思没有传达到吗? ...

可以在帖子的前面讲一下,这个教程是讲什么,并配上图,这样别人读这个帖子的时候,也知道这个帖子是什么教程。比如:这是一个讲如何制作cg gallary的教程。最后会制作一个这样的cg gallary 【图片】【图片】

也可以配上,要做这个功能研究的背景是什么。比如:因为自己的游戏想实现一个这样的功能。

万事开头难,感谢lz分享。
回复 支持 1 抱歉 0

使用道具 举报

 楼主| 发表于 2023-2-16 11:18:20 | 显示全部楼层
有问题请指出没用的知识又增加了
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2023-2-16 11:24:18 | 显示全部楼层
无聊,求看看代码
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2023-2-17 08:53:30 | 显示全部楼层
奇怪的第三种方式
回复 支持 抱歉

使用道具 举报

发表于 2023-2-17 08:59:19 | 显示全部楼层
有些时候,糟糕的中文表达能力比糟糕的代码更让人头疼……
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2023-2-17 09:43:25 | 显示全部楼层
被诅咒的章鱼 发表于 2023-2-17 08:59
有些时候,糟糕的中文表达能力比糟糕的代码更让人头疼……

完了,我的表达能力已经连版主都看不懂了(都很糟糕),
给点建议吧,是我的意思没有传达到吗?
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2023-2-18 11:35:29 | 显示全部楼层
blackpineapple 发表于 2023-2-18 02:47
可以在帖子的前面讲一下,这个教程是讲什么,并配上图,这样别人读这个帖子的时候,也知道这个帖子是什么 ...

确实,但我可以说是研究函数或者分析screen.rpy中的代码可能,而且这几天在考试,抽空做的,确实草率了
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2024-11-21 18:57 , Processed in 0.128898 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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