查看: 49|回复: 1

“如何给对话添加阴影”的解决办法

[复制链接]

1

主题

0

回帖

32

积分

新手上路

积分
32
发表于 2026-7-19 10:46:55 | 显示全部楼层 |阅读模式
本帖最后由 烈林凤 于 2026-7-27 10:12 编辑

这个教程起因是我接过的很多甲方都不知道怎么给对话加阴影,为此我特意去试了试,一波三折后才终于成功做出来,希望能将这个简单且实用的东西教给大家
这里感谢@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'

如果只是这样,那你会发现,阴影会在某个地方忽然被截断了,那是因为文档里写了:
blur 数值不超过可视组件的边长

而text组件的大小只有文字本身,加上阴影大概率会超过这个大小,因此,我们需要添加一个fixed组件,fixed组件如果不限制大小,默认与项目预设大小相等,因此添加一个fixed能扩大blur的生效范围
[RenPy] 纯文本查看 复制代码
        transform:
            blur 10
            fixed:
                text what id "what":
                    ## 让阴影部分更大更明显
                    outlines [(1, "#000")]
                    color '#000'

最后,如果你觉得阴影太黑太重了,那就再往transform填加一个alpha修改其透明度就好了。

希望能帮到大家。


1

主题

1

回帖

12

积分

新手上路

积分
12
发表于 2026-7-19 11:09:26 | 显示全部楼层
谢谢大佬!很有用!
关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|苏ICP备17067825号

在本发帖
关注公众号
返回顶部