找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 25913|回复: 6

[已解决] 小白提问,关于设置主角默认名字+自定义起名的问题

[复制链接]
发表于 2020-11-9 22:46:54 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 月与橘子叶 于 2020-11-16 22:39 编辑

想要达成的效果是这样的:默认主角姓名是李小花,点击开始游戏进入自定义名字界面,可以在这里输入自定义姓和名,一开始姓和名后面自带默认值类似:
姓:李
名:小花
玩家可以把默认的李以及小花删除掉,改成自定义的内容,但输入长度有限制,达到限制的长度不能继续输入,同时也不能输入纯空格。如果不想自定义,可以直接使用默认姓名
以下是我的代码:

问题在于:1.如何在让姓和名后面带上默认值,并达到玩家可以自行删除默认值,修改成自定义的效果(目前是自定义界面不会出现默认的李和小花,只有玩家输入为空才会出现默认的)
2.如何让玩家输入限制长度后无法输入?现在可以输入无限的汉字,只不过超出的部分到后面会被自行删掉
3.请原谅我是个刚刚接触renpy的小白,请问如何设定一个特殊的自定义姓名界面呢,比如输入部分放到屏幕正中间,加上背景图的那种
真的十分——感谢各位大佬!!!

label start:
    python:
            nv_xing = "李"
            nv_name = "小花"
            quan_name = ""
            while True:
                a = renpy.input("姓:") or nv_xing
                a = a[:2]
                a = a.replace(" ", "")
                i = int(len(a))
                if i != 0:
                    break
            while True:
                b = renpy.input("名:") or nv_name
                b = b[:2]
                b = b.replace(" ", "")
                j = int(len(b))
                if j != 0:
                    break
            quan_name = a+b


    define e = Character("[quan_name]",image="hui1.jpg")

    image bg kitchen = "厨房.png"
    scene bg kitchen

    show hui1

    e "您已创建一个新的 Ren'Py 游戏。"

    e "当您完善了故事、图片和音乐之后,您就可以向全世界发布了!"


    return




 楼主| 发表于 2020-11-9 22:55:55 | 显示全部楼层
咦,我重新发一下代码吧,大意了
[RenPy] 纯文本查看 复制代码
label start:
    python:
            nv_xing = "李"
            nv_name = "小花"
            quan_name = ""
            while True:
                a = renpy.input("姓:") or nv_xing
                a = a[:2]
                a = a.replace(" ", "")
                i = int(len(a))
                if i != 0:
                    break
            while True:
                b = renpy.input("名:") or nv_name
                b = b[:2]
                b = b.replace(" ", "")
                j = int(len(b))
                if j != 0:
                    break
            quan_name = a+b

    
    define e = Character("[quan_name]",image="hui1.jpg")

    image bg kitchen = "厨房.png"
    scene bg kitchen

    show hui1

    e "您已创建一个新的 Ren'Py 游戏。"

    e "当您完善了故事、图片和音乐之后,您就可以向全世界发布了!"


    return
回复 支持 抱歉

使用道具 举报

发表于 2020-11-10 08:42:33 | 显示全部楼层
输入框(input)
创建一个文本输入区域,允许用户输入文本。当用户按下回车键,输入的文本会通过交互动作返回。(如果界面是通过 call screen 唤起的,输入结果会存放在 _return 变量中。)

input语句不接受参数,可以跟下列特性:

value
此次输入使用的 input value 对象。输入值对象决定了以下情况的默认处理方式:默认值从哪里获取,文本改变时会发生什么,用户输入回车后会发生什么,以及文本是否可编辑。

value 应跟 default 和 changed 在相同的时间点给定。

default
在输入框中的默认文本。
length
输入框中允许的最大文本长度。
pixel_width
输入框最大像素宽度。如果输入一个字符会导致输入超出这个宽度,按键(keypress)事件消息就会被忽略。
allow
包含所有允许输入字符的字符串。(默认情况下允许输入任何字符。)
exclude
包含不允许输入字符的字符串。(默认情况下为空“{}”。)
copypaste
若为True,可以在这个输入栏中启用复制粘贴功能。(默认禁用。)
prefix
一个不可变的字符串,自动添加在用户输入前面。
suffix
一个不可变的字符串,自动添加在用户输入后面。
changed
当用于输入字符串改变时,使用输入字符串调用的一个Python函数。


第一个问题可以用default值填充默认内容
第二个问题可以用length指定长度
禁用纯空格需要指定长度>1并禁用两个连续的空格
第三个问题,把输入框做成一个screen

评分

参与人数 1干货 +2 收起 理由
龙氏 + 2 感谢解答!

查看全部评分

回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2020-11-11 23:15:04 | 显示全部楼层
763003211 发表于 2020-11-10 08:42
第一个问题可以用default值填充默认内容
第二个问题可以用length指定长度
禁用纯空格需要指定长度>1并禁 ...

谢谢大佬的指导!这里尝试把input写到了screen里面,但是输入姓氏后回车就直接跳到角色对话了,没有输入名字的部分,请问要怎么修改一下呢
[RenPy] 纯文本查看 复制代码
label start:
    default nv_xing = "李"
    default nv_name = "小花"

    screen entry_name():
        tag menu
        add "测试1.png" xpos 300 ypos 200
        fixed:
            text "姓:" xpos 455 ypos 320
            input:
                value VariableInputValue("nv_xing")
                size 35
                length 2
                allow None
                color "#2F4F4F"
                xpos 499
                ypos 313
                pixel_width 500
                exclude " "          
            text "名:" xpos 455 ypos 355
            input:
                value VariableInputValue("nv_name")
                size 35
                length 2
                allow None
                color "#2F4F4F"
                xpos 499
                ypos 342
                pixel_width 500
                exclude " "                                         
        button:    
            action Return() 
    call screen entry_name
    $quan_name = nv_xing + nv_name
    define e = Character("[quan_name]",image="hui1.jpg")

    image bg kitchen = "厨房.png"
    scene bg kitchen

    show hui1

    e "您已创建一个新的 Ren'Py 游戏。"

    e "当您完善了故事、图片和音乐之后,您就可以向全世界发布了!"


    return

麻烦您了
回复 支持 抱歉

使用道具 举报

发表于 2020-11-12 09:47:08 | 显示全部楼层
月与橘子叶 发表于 2020-11-11 23:15
谢谢大佬的指导!这里尝试把input写到了screen里面,但是输入姓氏后回车就直接跳到角色对话了,没有输入 ...

一个screen只能输入一次,姓和名分别做一个就好了
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2020-11-13 23:14:48 | 显示全部楼层
本帖最后由 月与橘子叶 于 2020-11-13 23:51 编辑
763003211 发表于 2020-11-12 09:47
一个screen只能输入一次,姓和名分别做一个就好了

再次感谢!最后一个小问题了,请问input在输入未完成的状态下是无法移动光标的吗,如果想修改第一个字,只能删掉全部一起再打出来吗?辛苦您
回复 支持 抱歉

使用道具 举报

发表于 2021-3-11 23:25:25 | 显示全部楼层
我借个楼,如果不是非要姓和名分开的话,这样就省事儿了吧
define X = Character("[name]")
$name=renpy.input("人称...")
    $ name = name.strip()
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 17:05 , Processed in 0.088093 second(s), 15 queries , File On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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