找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 878|回复: 7

[原创] RenPyUtil: 基于高级角色组的对话组实现 对话时让其他角色立绘变暗

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

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

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

×
本帖最后由 ZYKsslm 于 2024-4-25 03:02 编辑

RenPyUtil: 基于高级角色组的对话组实现



参考帖子:大佬们,怎么让一个角色说话的时候其他角色都变暗 - 解疑答难 - RenPy中文空间 - Powered by Discuz!
Github项目地址(同步最快):RenPyUtil


内容
1. 引入了对话组概念,对话组也属于一个高级角色组。
2. 更简便地解决了参考帖子的问题:当一个角色说话时,其他角色变暗以示强调。

注意
请确保项目目录中存在名为advanced_character_ren的python模块或RenPyUtil包。

advanced_character_ren模块代码(后缀为py)

RenPyUtil:AdvancedCharacter高级角色对象 - 经验教程 - RenPy中文空间

示例代码


[RenPy] 纯文本查看 复制代码
# 游戏的脚本可置于此文件中。

default a = AdvancedCharacter(
    "Alice", 
    image="alice",  # 绑定相应角色的立绘图像标签
)

default m = AdvancedCharacter(
    "Mary",
    image="mary",
)

default s = AdvancedCharacter(
    "Sylvie",
    image="sylvie",
)

# 定义一个对话组
default speaking_group = SpeakingGroup(a, m, s)


# 定义角色不同表情的立绘
image alice blush = "images/Alice_VNSpriteSet/Alice_Blush.png"
image alice default = "images/Alice_VNSpriteSet/Alice_Default.png"
image alice worried = "images/Alice_VNSpriteSet/Alice_Worried.png"
image alice doubt = "images/Alice_VNSpriteSet/Alice_Doubt.png"

image mary angry = "images/Sprite - Female Pink Hair Starter Pack/Sprite F PinkH Professional Angry01.png"
image mary smile = "images/Sprite - Female Pink Hair Starter Pack/Sprite F PinkH Professional Smile01.png"

image sylvie smile = "images/Sprite Starter Pack - Female White Hair/FWH smile01.png"
image sylvie angry = "images/Sprite Starter Pack - Female White Hair/FWH angry01.png"

# 游戏在此开始。

label start:
    scene bg:
        xysize (1920, 1080)
        truecenter

    # 将角色加入对话组中
    #$ speaking_group.add_characters(a, m, s)

    a "Hello, my name is Alice. How can I help you today?"

    show alice blush:
        zoom 0.65
        center
    
    a "a"
    a @ default "a default"

    show mary angry:
        zoom 0.7
        left

    m "m"
    m @ smile "m smile"

    show sylvie smile:
        zoom 0.65
        right

    s "s"
    s @ angry "s angry"

    a "return to a"

    m "return to m"

    # 当需要移除角色时(一位角色离场)
    $ speaking_group.del_characters(s)
    hide sylvie

    "Sylvie left."

    m "She has left now."
    a "This is our turn."
 
    return




评分

参与人数 1活力 +300 干货 +3 收起 理由
被诅咒的章鱼 + 300 + 3 感谢分享!

查看全部评分

发表于 2024-8-8 23:29:42 | 显示全部楼层
补充一下
[RenPy] 纯文本查看 复制代码
default speaking_group = SpeakingGroup(a, m, s, t=0.5, l=-0.5)

创建对话组可以提供 t l 参数来控制变化的时间和暗度,t越大,时间越长;l(负数)越小,暗度越大
回复 支持 抱歉

使用道具 举报

发表于 2024-1-8 00:08:24 | 显示全部楼层
感谢大佬分享,非常有帮助,还不能评分只能评论。
回复 支持 1 抱歉 0

使用道具 举报

发表于 2024-4-16 23:47:18 | 显示全部楼层
楼主我想反馈一个问题,如果还没有show过角色立绘,对白里先让他说话了,会默认出现一张黑色剪影的少女立绘,这个怎么去掉呢?
有些时候就是想要先让角色说话然后再出现立绘
恳请大大解答一些哇。谢谢~
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2024-4-22 01:20:17 | 显示全部楼层
LSTisNF 发表于 2024-4-16 23:47
楼主我想反馈一个问题,如果还没有show过角色立绘,对白里先让他说话了,会默认出现一张黑色剪影的少女立绘 ...

已修复,感谢反馈
回复 支持 抱歉

使用道具 举报

发表于 2024-4-23 15:59:33 | 显示全部楼层
ZYKsslm 发表于 2024-4-22 01:20
已修复,感谢反馈

哇~ 谢谢楼主,好用了
太感谢啦!
回复 支持 抱歉

使用道具 举报

发表于 2024-4-23 19:50:34 | 显示全部楼层
本帖最后由 LSTisNF 于 2024-4-23 20:13 编辑

楼主,我又来反馈新问题了,我有个角色标签是用 kn1 命名的,这个角色出场说话永远是未激活状态,只要换成 kn2就没问题,是什么原因哇,求教

好像问题消失了,我之前是通过存档读取来进行的对话,好像修改代码不起作用,才会出现这个情况,现在重头从新存档就没有这个问题了
回复 支持 抱歉

使用道具 举报

发表于 2024-4-24 14:34:01 | 显示全部楼层
楼主,这个功能组件对Renpy的版本有要求吗? 我7.5.3的好像用不了


  1. I'm sorry, but an uncaught exception occurred.

  2. While running game code:
  3.   File "renpy/common/00start.rpy", line 192, in script
  4.     python:
  5.   File "renpy/common/00start.rpy", line 193, in <module>
  6.     renpy.execute_default_statement(True)
  7.   File "game/rpy/juqing/biaoqian.rpy", line 2, in set_default
  8.     default speaking_group = CharacterGroup()
  9.   File "game/rpy/juqing/biaoqian.rpy", line 2, in <module>
  10.     default speaking_group = CharacterGroup()
  11. NameError: name 'CharacterGroup' is not defined

  12. -- Full Traceback ------------------------------------------------------------

  13. Full traceback:
  14.   File "renpy/common/00start.rpy", line 192, in script
  15.     python:
  16.   File "renpy/ast.py", line 1131, in execute
  17.     renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  18.   File "renpy/python.py", line 1061, in py_exec_bytecode
  19.     exec(bytecode, globals, locals)
  20.   File "renpy/common/00start.rpy", line 193, in <module>
  21.     renpy.execute_default_statement(True)
  22.   File "renpy/exports.py", line 3797, in execute_default_statement
  23.     i.set_default(start)
  24.   File "game/rpy/juqing/biaoqian.rpy", line 2, in set_default
  25.     default speaking_group = CharacterGroup()
  26.   File "renpy/python.py", line 1085, in py_eval_bytecode
  27.     return eval(bytecode, globals, locals)
  28.   File "game/rpy/juqing/biaoqian.rpy", line 2, in <module>
  29.     default speaking_group = CharacterGroup()
  30. NameError: name 'CharacterGroup' is not defined

  31. Windows-10-10.0.19041 AMD64
  32. Ren'Py 7.5.3.22090809
  33. Gaolute 1.0
  34. Wed Apr 24 14:32:53 2024
复制代码

回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 06:33 , Processed in 0.133887 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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