马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 烈林凤 于 2026-1-30 20:34 编辑
这个教程起因是我接过的很多甲方都不知道怎么给对话加阴影,为此我特意去试了试,一波三折后才终于成功做出来,希望能将这个简单且实用的东西教给大家
这里感谢@Aaron栩生阿龙 @Koji 提供的帮助,好久没认真写过renpy组件了,transform特性多少有点遗忘()
先写给出代码解决方法,这部分需要修改screen.rpy中的screen say里的相关代码:
[RenPy] 纯文本查看 复制代码 screen say(who, what):
style_prefix "say"
window:
id "window"
if who is not None:
window:
id "namebox"
style "namebox"
text who id "who"
## 给对话加阴影效果
transform:
blur 10
alpha 0.5
fixed:
text what id "what":
## 让阴影部分更大更明显
outlines [(1, "#000")]
## 可以添加偏移值使阴影偏移,可以选择取消注释
# offset (1,1)
color '#000'
## 强制将对话文本改成白色,使阴影看起来更明显
text what id "what":
color '#fff'
if not isinstance(SideImage(), Null):
xoffset 200
renpy内添加对话阴影的本质是复制一份text what置于底层,然后将其轮廓扩大并模糊化。
有的同学可能尝试过在text组件内直接添加blur,结果发现报错了,那是因为blur是transform方法,而不能直接适用于text组件,像一般add出来的组件,本质上是默认套了一层transform(感谢龙叔的解释)。
因此我们首先需要写一层transform,并将text组件放进去,给这个transform添加blur效果。
[RenPy] 纯文本查看 复制代码 transform:
blur 10
text what id "what":
## 让阴影部分更大更明显
outlines [(1, "#000")]
color '#000'
如果只是这样,那你会发现,阴影会在某个地方忽然被截断了,那是因为文档里写了:
而text组件的大小只有文字本身,加上阴影大概率会超过这个大小,因此,我们需要添加一个fixed组件,fixed组件如果不限制大小,默认与项目预设大小相等,因此添加一个fixed能扩大blur的生效范围
[RenPy] 纯文本查看 复制代码 transform:
blur 10
fixed:
text what id "what":
## 让阴影部分更大更明显
outlines [(1, "#000")]
color '#000'
最后,如果你觉得阴影太黑太重了,那就再往transform填加一个alpha修改其透明度就好了。
希望能帮到大家。
|