6.6 KiB
6.6 KiB
表达系统 Yarn 使用说明
系统概述
表达系统(Expression System)是一个粒子交互小游戏,玩家需要通过鼠标操作让目标字符连接在一起,同时避免与非目标字符连接。非目标字符会显示焦虑情绪的短句,目标字符最终会组成正面的表达句子。
Yarn 命令接口
1. 打开表达视图 open_expression
打开表达系统的视图(显示美术背景),但不启动粒子系统。
语法:
<<open_expression>>
说明:
- 这个命令只负责显示表达系统的视觉背景
- 不会启动粒子游戏,需要配合
start_expression使用 - 通常在切换相机后调用
示例:
<<open_expression>>
2. 启动粒子系统 start_expression
启动表达粒子系统,配置游戏参数并开始游戏。
语法:
<<start_expression "焦虑短句1|焦虑短句2|焦虑短句3" "目标句子" "完成对话节点">>
参数说明:
- 焦虑短句(必填):多个短句用
|分隔,这些短句会显示在非目标字符上,表示焦虑情绪 - 目标句子(必填):玩家需要完成的目标句子,系统会根据字数设置目标字符数量
- 完成对话节点(可选):游戏完成时触发的对话节点名称,不填则不触发
示例:
// 基础用法
<<start_expression "我好怕|怎么办|不行|好难" "我能做到" "ExpressionCompleted">>
// 更多焦虑短句
<<start_expression "我做不到|太难了|好可怕|怎么办|不想面对" "我会勇敢面对" "Stage1Complete">>
// 不触发对话节点
<<start_expression "担心|焦虑|不安" "保持冷静" "">>
3. 关闭表达系统 close_expression
关闭表达系统并停止所有动画。
语法:
<<close_expression>>
示例:
<<close_expression>>
4. 重置表达系统 reset_expression
重置表达系统,使用当前的配置重新开始游戏。
语法:
<<reset_expression>>
<<reset_expression 是否播放入场动画>>
参数说明:
- 是否播放入场动画(可选,默认 true):设置为 false 可跳过入场动画
示例:
// 重置并播放入场动画
<<reset_expression>>
// 重置但不播放入场动画
<<reset_expression false>>
完整使用流程示例
title: ExpressionGameExample
---
旁白:让我们开始表达粒子挑战吧!
// 步骤1:打开表达视图
<<open_expression>>
旁白:现在,尝试用正面的想法代替焦虑的念头。
// 步骤2:启动粒子系统
<<start_expression "我好怕|怎么办|不行" "我能做到" "ExpressionSuccess">>
// 等待玩家完成游戏...
// 当玩家完成目标后,会自动跳转到 ExpressionSuccess 节点
===
title: ExpressionSuccess
---
旁白:太棒了!你成功完成了挑战!
// 关闭表达系统
<<close_expression>>
// 继续剧情...
===
进阶用法示例
多阶段挑战
title: Stage1
---
旁白:第一阶段:克服恐惧
// 打开视图
<<open_expression>>
旁白:深呼吸,让我们开始...
// 启动第一阶段
<<start_expression "好可怕|我害怕|不敢" "勇敢面对" "Stage2">>
===
title: Stage2
---
旁白:第二阶段:建立信心
// 切换新配置(视图已打开时复用 start_expression)
<<start_expression "做不到|太难了|放弃" "我能做到" "Stage3">>
===
title: Stage3
---
旁白:最终阶段:突破自我
// 再次切换配置
<<start_expression "不可能|不行|失败" "成功突破" "GameComplete">>
===
title: GameComplete
---
旁白:恭喜你完成了所有挑战!
<<close_expression>>
===
配置建议
焦虑短句设计
- 字数建议:2-4 个字最佳(如"我好怕"、"怎么办")
- 数量建议:3-8 个短句,太少会重复,太多会混乱
- 情绪表达:应该符合当前剧情的情绪基调
示例:
- 恐惧主题:
"好可怕|我害怕|不敢|好恐怖|太吓人" - 焦虑主题:
"担心|不安|焦虑|紧张|烦躁" - 自我怀疑:
"做不到|不行|我不行|太难了|失败"
目标句子设计
- 字数建议:4-8 个字最佳(太短太简单,太长太难)
- 正面引导:通常是与焦虑短句相反的正面表达
- 简洁有力:容易理解且有力量感
示例:
"我能做到"- 4字,简洁有力"勇敢面对"- 4字,正面积极"保持冷静"- 4字,情绪引导"相信自己"- 4字,自我肯定
注意事项
- 系统初始化:确保场景中有
ExpressionManager组件 - 相机切换:开启系统前建议切换到
Expression相机 - 完成触发:只有在目标全部完成且聚焦动画播放完毕后才会触发对话节点
- 焦虑短句分隔符:必须使用英文竖线
|分隔,不要使用中文竖线| - 对话节点命名:对话节点名称区分大小写,请确保拼写正确
技术实现说明
系统架构
ExpressionManager (顶层管理器)
├── LanguageParticleManager (粒子系统核心)
│ ├── CandidateParticle (候选粒子 - 可交互)
│ ├── FloatingTextParticle (浮动粒子 - 背景)
│ └── ConnectionRenderer (连接线渲染)
└── LanguageYarnCommand (Yarn 命令接口)
配置传递流程
- Yarn 调用
open_expression命令 → 打开视图(显示美术背景) - Yarn 调用
start_expression命令 → 启动粒子系统 LanguageYarnCommand解析焦虑短句和目标句子参数ExpressionManager接收配置LanguageParticleManager初始化粒子系统TextParticle使用配置生成字符并播放入场动画
常见问题
Q: 为什么要分开 open_expression 和 start_expression?
A: 这样可以让设计师更灵活地控制时机。比如先打开视图和切换相机,然后在对话中解释游戏规则,最后再启动粒子系统。
Q: 可以只调用 start_expression 而不调用 open_expression 吗?
A: 理论上可以,但建议先调用 open_expression 以确保视图已经显示。
Q: 焦虑短句没有显示?
A: 检查是否使用了英文竖线 | 分隔,确保没有多余的空格。
Q: 完成后没有触发对话节点?
A: 检查对话节点名称是否正确,确保该节点在 Yarn 文件中存在。
Q: 游戏太难/太简单?
A: 可以在 LanguageParticleManager 的 Inspector 中调整参数,如连接距离、粒子数量等。
联系与支持
如有问题或建议,请联系技术团队。