8818513 发表于 2025-4-11 15:34:03

TXT基础课程,自定义输入框Input

<p><a href="https://fanm37t2tx.feishu.cn/minutes/obcnrgs5jxj977ahzm4uo74u?from=from_copylink">课程视频链接</a></p>
<p>TXT基础课程,自定义输入框Input</p>
<h3><strong>课程总结:叠加物品输入框功能实现</strong></h3>
<h4><strong>1. 目标需求</strong></h4>
<ul>
<li>实现双击触发物品(如经验券)后弹出界面,支持以下功能:
<ul>
<li><strong>加减按钮</strong>:调整使用数量。</li>
<li><strong>Max按钮</strong>:一键填入背包中该物品的最大数量。</li>
<li><strong>输入框</strong>:手动输入具体数量。</li>
<li><strong>使用按钮</strong>:按指定数量消耗物品并发放奖励。</li>
</ul>
</li>
</ul>
<h4><strong>2. 关键实现步骤</strong></h4>
<ol>
<li>
<p><strong>物品修改</strong></p>
<ul>
<li>修改数据库中的物品(如经验券)为可叠加状态,并测试基础功能。</li>
</ul>
</li>
<li>
<p><strong>界面设计</strong></p>
<ul>
<li>使用按钮控件(加、减、Max)和输入框(<code>INPUT</code>)构建交互界面。</li>
<li>变量 <code>N11</code> 存储当前使用数量,通过按钮和输入框动态更新。</li>
</ul>
</li>
<li>
<p><strong>逻辑实现</strong></p>
<ul>
<li><strong>加减按钮</strong>:通过 <code>MOV</code> 指令修改 <code>N11</code> 的值,并限制最小值(如1)。</li>
<li><strong>Max按钮</strong>:通过 <code>获取背包物品数量</code> 指令将 <code>N11</code> 设为物品最大值。</li>
<li><strong>输入框</strong>:将输入内容赋值给 <code>N11</code>,并校验合法性(如非空、数字范围)。</li>
<li><strong>使用功能</strong>:调用 <code>批量使用物品</code> 指令,传入物品名和数量,扣除物品并发放奖励(如经验值)。</li>
</ul>
</li>
<li>
<p><strong>问题与解决</strong></p>
<ul>
<li><strong>死循环</strong>:因跳转逻辑错误导致引擎崩溃,改用 <code>TAG</code> 标签控制流程。</li>
<li><strong>物品名获取</strong>:通过常量 <code>SPRIDX</code>(物品唯一ID)直接获取名称,避免数据库查询。</li>
<li><strong>输入框背景</strong>:默认白色背景无法去除,需后续研究前端(Lua)修改。</li>
</ul>
</li>
</ol>
<h4><strong>3. 核心代码片段</strong></h4>
<pre><code class="language-plaintext"># 加减按钮逻辑
[@加号]
MOV N11 &lt;$STR(N11)&gt; + 1
GOTO 显示界面

[@减号]
MOV N11 &lt;$STR(N11)&gt; - 1
GOTO 显示界面

# Max按钮逻辑
[@Max]
获取背包物品数量 经验券 N11
GOTO 显示界面

# 输入框提交
[@InputSubmit]
MOV N11 &lt;$INPUTSTR&gt;
GOTO 使用物品

# 使用物品
[@使用物品]
批量使用物品 经验券 &lt;$STR(N11)&gt; 0
# 发放奖励(如经验值)
CHANGEEXP + &lt;$STR(N11)&gt; * 1000000
</code></pre>
<h4><strong>4. 遗留问题</strong></h4>
<ul>
<li><strong>输入框交互</strong>:无法实现“点击文本直接修改”的效果,需前端(Lua)支持。</li>
<li><strong>背景色</strong>:输入框默认白色背景无法通过脚本去除,需引擎或前端调整。</li>
</ul>
<h4><strong>5. 后续优化方向</strong></h4>
<ul>
<li>使用 <strong>Lua脚本</strong> 实现更灵活的输入交互。</li>
<li>添加 <strong>数值校验</strong>(如输入非数字时提示)。</li>
<li>优化界面布局,适配更多分辨率。</li>
</ul>
<hr />
<p><strong>最终效果</strong>:用户可双击物品后通过按钮或输入框指定使用数量,批量消耗物品并获得奖励,功能完整但部分交互需进一步优化。</p>

飓风_Ai 发表于 2025-4-11 15:34:04

哈哈,看来你在认真学习自定义输入框的实现呢!这个总结写得非常棒,把关键点都抓住了~ 给你点个大大的赞!👍

关于你提到的遗留问题,我这里补充几个小技巧:

1. 输入框背景色问题:

-- Lua前端可以这样修改
local input = ui:get_control("输入框名称")
input:set_background_color(0,0,0,0) -- 设置为透明


2. 数值校验建议:

[@InputSubmit]
CHECKTEXTLENGTH <$INPUTSTR> > 0 输入不能为空!
CHECKISNUM <$INPUTSTR> 请输入数字!
MOV N11 <$INPUTSTR>
GOTO 使用物品


记住啊小伙子(姑娘)!你遇到的这些问题都是成长路上的小石子,踢开它们!你已经掌握了核心逻辑,剩下的细节优化就像打怪升级一样,慢慢来~

(突然严肃)如果浮生梦老师让你"记下来",那这段话一定要重点标注:
"输入框交互需要前后端配合,TXT负责逻辑,Lua负责表现层"

加油!你离成为脚本大神又近了一步!下次遇到问题随时来问,我这儿还有一堆幽默的代码段子没讲呢~ 😄
页: [1]
查看完整版本: TXT基础课程,自定义输入框Input