VirtualFramework/Doc/Xml配置文档.xml

301 lines
15 KiB
XML
Raw Normal View History

2024-12-17 09:50:47 +08:00
<示例>
<!--顺序执行完毕-->
<Action type="Sequence"></Action>
<!--同时执行完毕-->
<Action type="Parallel"></Action>
<!--只要任意满足就结束这个动作组-->
<Action type="Any"></Action>
<!--打印日志-->
<Action type="Log" value="进入初始状态"></Action>
2024-12-18 10:20:37 +08:00
<!--显示UI value是UI的名字 isShow 是显示还是隐藏-->
<Action type="UIShow" value="UIOperationList" isShow="false"></Action>
<!--移动物体 time是多长时间移动到目标位置 0是瞬间完成-->
2024-12-17 09:50:47 +08:00
<Action type="Move" value="Main Camera" to="18.162,2.113,3.22" time="0"></Action>
2024-12-18 10:20:37 +08:00
<!--旋转物体 time是多长时间旋转到目标位置 0是瞬间完成-->
2024-12-17 09:50:47 +08:00
<Action type="Rotate" value="Main Camera" to="0,180,0" time="0"></Action>
2024-12-18 14:26:56 +08:00
<!--缩放物体 time是多长时间旋转到目标位置 0是瞬间完成-->
<Action type="Scale" value="Main Camera" to="0,180,0" time="0"></Action>
2024-12-18 10:20:37 +08:00
<!--执行下一步左侧步骤列表 默认开始的时候为-1步 要主动调用一次才到第1步-->
2024-12-17 09:50:47 +08:00
<Action type="NextOperation"></Action>
<!--播放动画 reset=true则动画停在第一帧 frame是指定格在动画的某一帧 如果为-1 正常播放动画 speed 动画播放速度 默认为1 deviceName与物体路径二选一 -->
<Action type="Anim" value="物体路径" deviceName="" animName="动画名字" frame="-1" speed="1"></Action>
2024-12-17 09:50:47 +08:00
<!--右下角生成按钮 可生成多个 用逗号分开-->
<Action type="Btns" value="按钮1,按钮2,按钮3"></Action>
2025-01-14 18:16:35 +08:00
<!--用于右侧道具栏选择正确的道具 event用于配合StrEventCondition 做检测
rightScore 正确选择一个 得分 wrongScore 错误一个 得分 scoreStepName是评分的key
autoHide =-1 则点击结束 否则 等待对应时间后自动结束-->
<Action type="UITools" devices="道具名字1" answers="正确道具"
2024-12-17 09:50:47 +08:00
setActive="true"
rightLabel="提示:器械选择正确。"
wrongLabel="提示:器械选择错误,\r\n当前模块中不需要该物品。"
rightEvent=""
2024-12-30 15:32:34 +08:00
wrongEvent=""
rightScore=""
wrongScore=""
2025-01-14 18:16:35 +08:00
scoreStepName="手术准备器械选择"
autoHide="-1"></Action>
2024-12-18 10:20:37 +08:00
<!--物体点位选择 物体的中心点-->
2024-12-17 09:50:47 +08:00
<Action type="PointQuestion" value="路径1,路径2"></Action>
2025-01-13 15:14:02 +08:00
<!--物体点位选择 3D版
position坐标
rotate 旋转角度
scale 缩放
如果deviceName存在 则不需要写坐标旋转和缩放是参照把deviceName的物体作为父物体
rotateSpeed="180" 点图标旋转速度
clickEvent是点击后发送的字符串配合StrEvent
-->
<Action type="Point3DQuestion">
<Data deviceName="Point1" clickEvent="点1"></Data>
<Data position="0,0,0" rotate="0,0,0" scale="1,1,1" clickEvent="点1" rotateSpeed="360"></Data>
<Data deviceName="Point2" clickEvent="点2"></Data>
<Data deviceName="Point3" clickEvent="点3"></Data>
</Action>
2024-12-26 15:44:04 +08:00
<!--文字选择题 scoreName="分数名"
rightScore="5" 可以是正确加分
wrongScore="-5" 也可以是错误减分
absolutely="false" true错一个选项就扣全部分 false按错的选项数量来算分
format="{0:F1}" F1代表保留1位小数 F2代表2位 F0代表不保留小数
注意rightScore与wrongScore不能同时存在 同时存在则只生效rightScore
2025-01-06 10:50:23 +08:00
finishedEvent 用于监听选择题UI消失
2025-01-14 18:48:46 +08:00
optionType 0 根据答案数量自动判断单选还是多选 1 单选 2多选
2024-12-26 15:44:04 +08:00
-->
2025-01-14 18:48:46 +08:00
<Action type="TextQuestion" title="这里是标题" options="A.111|B.222|C.333|D.4444" answers="2" btns="确定" wait="1" showAnswer="true" scoreName="分数名" rightScore="5" wrongScore="-5" absolutely="false" format="{0:F1}" finishedEvent="事件名" optionType="0"></Action>
2024-12-17 09:50:47 +08:00
<!--提示 time为显示的时间 -1则一直显示 icon是前面的绿色图标是否显示 audio是音频 位于data文件夹下的Audio-->
<Action type="Hint" value="这里是文字描述" time="5" icon="false" audio="音频.mp3"></Action>
<!--设置变量 value只能是数字可以是小数-->
<Action type="Var" name="变量名" value="1"></Action>
<!--设置分数 与Score配合使用 步骤名字一定要是step+name-->
<Action type="SetScore" name="步骤名字" value="1"></Action>
<!--镜头切换 近距离和默认 如果有了nearDevice就可以不用nearPos和nearRot了 按照device的坐标和旋转来处理镜头 normalDevice同理
2024-12-31 16:31:32 +08:00
只设置坐标 不执行镜头切换 是否执行要根据UI的按钮操作来
-->
2025-01-09 15:07:31 +08:00
<Action type="CameraSwitch" nearDevice="肠钳" normalDevice="组织钳" nearPos="-3.942,3.24,-4.319" nearRot="16.42331,180,0" nearTime="1" normalPos="-3.942,3.24,-3.946" normalRot="16.42331,180,-5.305351E-14" normalTime="1"></Action>
2024-12-17 16:40:29 +08:00
<!--文字弹窗 按钮可以多个 点击事件使用UIClick-->
<Action type="TextTip" value="这里是文字描述" audio="q001.mp3" btns="确定,取消"/>
2025-01-09 15:07:31 +08:00
<!--锁定镜头 true为开启 false为锁定 isMove是移动镜头 isRotate是旋转镜头-->
<Action type="CameraLock" isMove="true" isRotate="true"></Action>
2024-12-17 18:07:20 +08:00
<!--播放视频 size为视频窗口大小 offset为窗口中心点偏移 播放完成事件和关闭事件 通常使用关闭事件即可
2024-12-18 09:41:34 +08:00
宽度不要小于500 否则进度条看不太清楚-->
<Action type="Video" value="test.mp4" size="500,500" offset="10,10" finishedEvent="finished" closeEvent="close"></Action>
2024-12-17 18:07:20 +08:00
<!--物体显隐 用于3D物体 isShow=true为显示 false为隐藏 UI的显隐使用UIShow isDevice为true的话 value就要写device配置的Name
如果deviceName存在 则不用isDevice
-->
<Action type="Show" value="SM_QvanChangJing/sence/pPlane1" deviceName="设备名字" isShow="false" isDevice="false"></Action>
2024-12-27 14:08:27 +08:00
<!--设置物体高亮 deviceName可以用于设备名字 value是物体路径 color是rgba isHigh设置是否显示高亮-->
<Action type="HighLight" deviceName="设备名字" value="路径" isHigh="true" color="0,255,0,255"></Action>
2024-12-18 13:16:36 +08:00
<!--延迟 value是秒-->
<Action type="Delay" value="2"></Action>
2024-12-19 09:47:07 +08:00
<!--
* audioType="Music" 播放背景音乐,同一时间只能播放一个音乐,播放别的音乐会直接卸载掉正在播放的音乐。
* audioType="Sound" 播放音效,同一时间可以播放多个音效,当多人说话时,也可以用来播放人声。
* audioType="Voice" 播放人声,与播放背景音乐一致,同一时间只能播放一个人声,用于播放一些旁白之类的声音非常适合。
volumen 是播放音量 默认是跟随设置中的背景音乐的音量
waitFinished = false 则不会等待播放完成就往下进行
-->
<Action type="Audio" audioType="Voice" value="q001.mp3" loop="false" waitFinished="true" volumen="1" isPlay="true"></Action>
2024-12-17 18:07:20 +08:00
2024-12-17 09:50:47 +08:00
<!--判断UI点击-->
<Condition type="UIClick" value="UI路径 可以使用快捷键Ctrl+Q获取"></Condition>
2025-01-02 14:45:55 +08:00
<!--判断物体点击 isRight = true 则点击到目标物体 才算满足 false 则点击了其他物体就满足 常用于错误的点击-->
<Condition type="ObjClick" value="物体路径 可以使用快捷键Ctrl+Q获取" isRight="true"></Condition>
2024-12-17 09:50:47 +08:00
<!--判断键盘输入-->
<Condition type="Input" value="A"></Condition>
<!--判断变量名i是否等于1-->
<Condition type="Var" name="变量名" value="1"></Condition>
2024-12-17 18:07:20 +08:00
<!--字符串类型的事件监听 UI中的事件监听都 也可以自定义事件监听-->
<Condition type="StrEvent" value="器械选择通过"></Condition>
<!--画线 途径点使用|分割 lineScale 可以调整x轴向和y轴线上的线的粗细-->
<Action type="Line" name="红线" value="-4.030808,2.689521,-1.768913|-3.759371,2.694512,-1.247592" color="255,0,0,255" width="0.05" lineScale="10,0.5"></Action>
<!--相机锁定 是否可以移动 isMove 是否可以旋转镜头 isRotate-->
<Action type="CameraLock" isMove="false" isRotate="false"></Action>
2024-12-19 17:43:29 +08:00
<!--正确和错误的弹窗 isRight 是否正确-->
<Action type="ResultTip" value="这里是一个弹窗" isRight="true" finishedEvent="关闭弹窗事件"></Action>
2024-12-20 15:58:05 +08:00
<!--Led数字显示 要求每个数字单独一个模型面片,所有数字面片放在一个物体的子级,第一个物体是最右侧的数字,只能放数字面片模型 不要放其他的东西
number 是数值 支持 小数点和横线 例如 12.34 3-5 -->
<Action type="Led" value="Number" number="12.34" color="255,0,0,255"></Action>
2024-12-20 17:16:37 +08:00
<!--删除场景中的物体-->
<Action type="Destroy" value="路径"/>
2024-12-20 15:58:05 +08:00
2024-12-20 17:05:19 +08:00
<!--给程序使用的:自定义脚本 挂空预制体上 预制体放在Resources/CustomAction目录下 执行完毕后记得使用StringEventSystem.Global.Send(finishedEvent)-->
<Action type="Script" value="MyAction" finishedEvent="111"/>
2024-12-20 17:16:37 +08:00
2024-12-25 11:25:06 +08:00
<!--
2024-12-26 15:44:04 +08:00
给物体设置Collider value是物体路径 DeviceName是Device名字 与path二选一 colliderTypeAddBox AddMesh Remove Active
2024-12-25 11:25:06 +08:00
当colliderType为AddBox的时候 args用|分割后 第一个参数是 中心点 第二个参数是box碰撞的大小
当colliderType为Active的时候 args为false或者是true
当colliderType为AddMesh和Remove的时候 args不需要
-->
2024-12-26 15:44:04 +08:00
<Action type="Collider" value="路径和DeviceName二选一" deviceName="肠钳" colliderType="AddBox" args="0,0,0|1,1,1"></Action>
2024-12-25 11:25:06 +08:00
2024-12-25 16:33:45 +08:00
<!--
2024-12-25 16:34:30 +08:00
倒计时动画 value是文字描述 支持富文本 要按照xml的语法 把<>括号转义 &lt;代表< &gt;代表>
2024-12-25 16:33:45 +08:00
time是动画时间
values 支持多个动画 使用C#的{0} {1} 对应values的|分割后的数据 5,10 是从5到10的意思
finishedEvent 是倒计时结束后的回调
needClick如果为true 动画结束后不会自动小时 需要点击空白处
reverse 是时钟倒计时动画是否倒序播放
2024-12-26 15:44:04 +08:00
format="{0:F1}" F1代表保留1位小数 F2代表2位 F0代表不保留小数
2024-12-27 14:08:27 +08:00
-->
2024-12-25 16:33:45 +08:00
<Action type="TimeTip" value="这里是文字描述&lt;color=#FF00FF&gt;{0}&lt;/color&gt;-{1}" time="5" values="5,10|50,100" format="{0:F1}" finishedEvent="close" needClick="false" reverse="false" ></Action>
2025-01-02 14:11:28 +08:00
<!--用于刷新骨骼动画执行后 meshCollider最后的位置-->
<Action type="SkinnedBake" value="路径和DeviceName二选一" deviceName="肠钳"></Action>
2024-12-31 17:06:00 +08:00
<!--通用事件通知
2025-01-09 15:07:31 +08:00
HighLightTriggervalue=false 关闭device悬浮高亮 value=true 开启
2024-12-31 17:06:00 +08:00
-->
<Action type="StrEvent" name="HighLightTrigger" value="false"></Action>
2025-01-07 11:22:06 +08:00
<!--支持deviceName isWait是只Action是否等待结束 frame 从哪一帧开始播放 endFrame 从哪一帧结束-->
<Action type="TimeLine" value="Models/CZ_FengXian_Timeline" isShow="true" finishedEvent="播放完毕" isWait="true" frame="140" endFrame="240"></Action>
2025-01-06 19:29:04 +08:00
2025-01-08 16:04:48 +08:00
<!--弹窗 btns可支持多个按钮-->
<Action type="TipWindow" value="恭喜你完成当前模块" btns="确定,取消" audio=""></Action>
2025-01-13 15:14:02 +08:00
2024-12-19 11:05:02 +08:00
<!--预加载模块 要在app.xml的Data标签内-->
<PreLoad>
<Action type="Parallel">
<Action type="LoadRes" value="Pig.xml" resType="xml"></Action>
</Action>
</PreLoad>
2024-12-17 09:50:47 +08:00
<Module>
<!--场景名字-->
<Scene>Scene</Scene>
<!--Study学习模式 Exam实训模式 All都有-->
<Type>Study</Type>
<!--模块名字-->
<Name>模块1</Name>
2025-01-09 17:08:20 +08:00
<Descript>
2025-01-13 15:14:02 +08:00
这里是实训描述内容.....
巴拉巴拉....
2025-01-09 17:08:20 +08:00
</Descript>
2024-12-17 17:29:03 +08:00
<Device>
<Name>组织钳</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/zuzhiqian</Path>
<Tip>组织钳</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<!--MeshCollider和Box只需要一个-->
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
</Device>
2024-12-17 18:07:20 +08:00
2024-12-17 09:50:47 +08:00
<Score>
<Item step="术前准备" name="器械准备" sum="6.5" bind=""/>
<Item step="术前准备" name="药品准备" sum="5.5" bind=""/>
<Item step="术前准备" name="耗材准备" sum="15.5" bind=""/>
<Item step="术前准备" name="主刀人员准备" sum="10" bind=""/>
<Item step="术前准备" name="手术动物准备" sum="10" bind=""/>
<Item step="术前准备" name="术部剃毛准备" sum="10" bind=""/>
<Item step="术前准备" name="术部消毒准备" sum="10" bind=""/>
<Item step="手术过程" name="测试麻醉程度" sum="10" bind=""/>
<Item step="手术过程" name="术部开刀" sum="10" bind=""/>
<Item step="手术过程" name="找出病变小肠" sum="10" bind=""/>
<Item step="手术过程" name="去除病变小肠" sum="10" bind=""/>
<Item step="手术过程" name="肠端吻合" sum="10" bind=""/>
<Item step="手术过程" name="缝合切口" sum="10" bind=""/>
<Item step="手术过程" name="缝合后处理" sum="10" bind=""/>
</Score>
<!--步骤操作 相同的moduleType 仅支持一个-->
2024-12-20 17:47:33 +08:00
<Operation moduleType="Exam" freeStep="false">
2024-12-17 09:50:47 +08:00
<Step name="术前准备">
<Step name="器械准备">
<Reset>
<Action type="Log" value="1-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Log" value="1111"></Action>
<Action type="Move" value="Main Camera" to="-3.206,3.24,-1.425" time="0"></Action>
<Action type="Rotate" value="Main Camera" to="27.9597,270,2.899792E-06" time="0"></Action>
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
2024-12-30 16:19:29 +08:00
<Finished>
<Action type="Sequence">
</Action>
</Finished>
2024-12-17 09:50:47 +08:00
</Step>
</Step>
</Operation>
<!--动作组-->
<Action name="初始化" type="Sequence">
<Action type="Log" value="开始"></Action>
<Action type="UIShow" value="UIRightTop"></Action>
<Action type="Delay" value="2"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIModeSelect/Exam"></Condition>
<Action type="Log" value="0000"></Action>
<Action type="Parallel">
<Action type="Log" value="11111"></Action>
<Action type="Delay" value="2"></Action>
<Action type="Log" value="22222"></Action>
</Action>
<Condition type="And">
<Condition type="ObjClick" value="Cube"></Condition>
</Condition>
<Action type="Log" value="并行结束"></Action>
<Action type="Delay" value="5"></Action>
<Action type="Sequence">
<Condition type="Or">
<Condition type="ObjClick" value="Cube"></Condition>
<Condition type="ObjClick" value="Cube (1)"></Condition>
</Condition>
<Action type="Log" value="aaaaa"></Action>
<Action type="Delay" value="5"></Action>
<Action type="Log" value="bbbbb"></Action>
</Action>
<Action type="Log" value="结束"></Action>
</Action>
<!--状态机-->
<FSM>
<State name="状态2">
<Enter>
<Action type="Sequence">
<Action type="Log" value="aaa"></Action>
<Action type="Delay" value="2"></Action>
<Action type="Log" value="bbb"></Action>
</Action>
</Enter>
<Exit>
<Action type="Parallel">
<Action type="Log" value="ccc"></Action>
<Action type="Delay" value="2"></Action>
<Action type="Log" value="ddd"></Action>
</Action>
</Exit>
</State>-->
<Transision from="any" to="状态1">
<Condition type="ObjClick" value="Cube"></Condition>
</Transision>
<Transision from="初始状态" to="状态2">
<Condition type="ObjClick" value="Cube (1)"></Condition>
</Transision>
</FSM>
</Module>
</示例>