VirtualFramework/Doc/Xml配置文档.xml

549 lines
26 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>
2025-02-08 17:30:04 +08:00
<!--显示得分UI界面 onlyCurModule 是否仅显示当前模块成绩 默认为false-->
<Action type="ShowScore" onlyCurModule="true"></Action>
2025-04-08 17:17:27 +08:00
2025-02-08 17:30:04 +08:00
<!--切换operation模块 使用此功能 operation的配置中必须有name属性
2025-03-10 17:08:23 +08:00
name为operation配置中的name
2025-03-10 17:09:16 +08:00
执行此行后 不需要在执行NextOperationAction 框架底层执行了
2025-03-10 17:08:23 +08:00
此行之后 会停止当前的Action组 此行代码要放到最后执行 后期针对此加控制参数-->
2025-02-08 17:30:04 +08:00
<Action type="OperationChange" name="operation配置的name值"></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
2025-01-19 11:20:01 +08:00
autoHide =-1 则点击结束 否则 等待对应时间后自动结束
2025-03-07 15:06:15 +08:00
totalScore 是配合wrongScore的用于初始化一个分数 然后选择扣分
random 是否打乱devices的顺序
2025-03-07 16:02:36 +08:00
scrollSpeed 鼠标滚轮的滑动速度
2025-03-26 15:21:46 +08:00
position left/right 可以让道具栏在左侧或者右侧
errorCount 错误的次数 不为0的情况下 大于这个次数才会触发WrongScore-->
<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-19 11:20:01 +08:00
totalScore=""
2025-01-14 18:16:35 +08:00
scoreStepName="手术准备器械选择"
2025-03-07 15:06:15 +08:00
autoHide="-1"
random="true"
2025-03-07 16:02:36 +08:00
scrollSpeed="25"
2025-03-26 15:21:46 +08:00
position="right"
wrongCount="0"></Action>
2025-03-08 13:15:13 +08:00
<!--道具背包,用于配合状态机进行道具的使用 目前是初步版本仅支持配合UIClick点击暂无道具数量等功能 详细参数可参考UITools-->
<Action type="UIBackPack" devices="道具名字1"
random="true"
scrollSpeed="25"
position="right"></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>
2025-02-07 17:06:19 +08:00
<!--输入框
title 显示的题目
2025-05-26 13:42:06 +08:00
Input 为输入框(可多个) var里面存储是输入值 unit 为输入框后面的内容
2025-02-07 17:06:19 +08:00
btn 为按钮(可多个)
checkAnswer 是否开启检查答案
2025-03-24 17:43:19 +08:00
answer 是正确答案 用|分割 可以支持多个正确答案
2025-02-07 17:06:19 +08:00
wrongLabel 输入错误的提示文字
wrongCount 错误后重新输入的次数
autoHide 错误弹窗自动消失的停留时间
scoreStepName 对应Score
rightScore 答对的分数
wrongScore错误的分数 (每错一次扣一次分)
-->
<Action type="Input" title="请输入" finishedEvent="UI关闭事件通知用StrEvent接收">
2025-05-26 13:42:06 +08:00
<Input name="数字1:" var="变量1" answer="100|200" unit=""></Input>
2025-03-24 17:43:19 +08:00
<Input name="数字2:" var="变量2" answer="200|400"></Input>
2025-02-07 17:06:19 +08:00
<Btn name="确定" clickEvent="确定点击" checkAnswer="true" wrongLabel="输入错误" wrongCount="3" autoHide="-1" scoreStepName="" rightScore="0" wrongScore="-1"></Btn>
<Btn name="取消"></Btn>
</Action>
2025-01-13 15:14:02 +08:00
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多选
2025-05-26 11:32:54 +08:00
des 答案解析 不为空的情况下 点击确定显示解析 在点确定 关闭窗口
cellSize : 选项的格子宽高 默认370,43 可以修改
2024-12-26 15:44:04 +08:00
-->
2025-05-26 11:32:54 +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"
des="这里是答案解析"
cellSize="370,43"></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-20 18:42:51 +08:00
如果不配置 nearPos或者normalPos 则自动隐藏对应的视角UI按钮
2025-03-24 14:32:22 +08:00
VR版 单独的相机位置使用vrPos和vrRot来配置
-->
2025-03-24 14:32:22 +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" vrPos="0,0,0" vrRot="0,0,0" vrTime="0"></Action>
2025-03-07 15:18:20 +08:00
<!--文字弹窗 按钮可以多个 点击事件使用UIClick
alpha 0-1 背景的透明度
-->
<Action type="TextTip" title="这里是标题" value="这里是文字描述" audio="q001.mp3" btns="确定,取消" alpha="0.5"/>
2025-03-08 14:05:03 +08:00
<!--文字窗口 用于用一直存在的 非弹窗类需求-->
<Action type="TextWindow" title="这里是标题" value="这里是文字描述" audio="q001.mp3" btns="确定,取消" position="left" scrollSpeed="25"/>
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>
2025-02-07 13:07:29 +08:00
<!--设置物体高亮 deviceName可以用于设备名字 value是物体路径 color是rgba isHigh设置是否显示高亮 isIndependent为true 可以避免模型高亮被遮挡
visibility: 有三种形式 Normal, AlwaysOnTop,OnlyWhenOccluded
-->
<Action type="HighLight" deviceName="设备名字" value="路径" isHigh="true" color="0,255,0,255" isIndependent="true" visibility="Normal"></Action>
2025-02-06 16:26:44 +08:00
<!--设置物体高亮 deviceName可以用于设备名字 value是物体路径 color是rgba isHigh设置是否显示高亮 isIndependent为true 可以避免模型高亮被遮挡
time是从不显示到完全显示的时间
count是循环 -1为无限循环需要主动关闭
当count不为-1时 可以使用finishedEvent配合strEvent做闪烁结束的监听
2025-02-07 13:07:29 +08:00
visibility: 有三种形式 Normal, AlwaysOnTop,OnlyWhenOccluded
2025-02-06 16:26:44 +08:00
-->
2025-02-07 13:07:29 +08:00
<Action type="HighLightFlash" deviceName="测试" isHigh="true" color="0,255,0,255" time="1" count="-1" finishedEvent="等待" visibility="Normal"></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-02-06 15:17:08 +08:00
<!--判断物体点击 支持deviceName isRight = true 则点击到目标物体 才算满足 false 则点击了其他物体就满足 常用于错误的点击-->
<Condition type="ObjClick" deviceName="设备名" value="物体路径 可以使用快捷键Ctrl+Q获取" isRight="true"></Condition>
<!--判断物体点击(长按) time为长按时间-->
<Condition type="ObjClickLong" deviceName="设备名" value="物体路径 可以使用快捷键Ctrl+Q获取" time="3"></Condition>
2025-02-06 13:11:06 +08:00
<!--判断键盘输入 这里的value对应的是KeyCode枚举-->
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>
2025-05-19 15:08:55 +08:00
<!--身上是否存有某个道具 count默认为1 可以判断数量 如身上有某个道具20个-->
<Condition type="HasDevice" deviceName="道具名" count="1"></Condition>
2025-05-19 15:34:58 +08:00
<!--判断是否距离某个点 在某个范围内 ignoreY 是否忽略Y方向的距离-->
<Condition type="Distance" value="10" targetPos="0,0,0" ignoreY="false"></Condition>
2025-05-26 11:32:54 +08:00
<!--画线 途径点使用|分割 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 是否正确-->
2025-01-16 18:57:42 +08:00
<Action type="ResultTip" value="这里是一个弹窗" isRight="true" finishedEvent="关闭弹窗事件" autoHide="1"></Action>
2025-02-08 10:59:20 +08:00
<!--图片弹窗
2025-02-08 11:00:12 +08:00
path 为Data/Image/下的路径
2025-02-08 10:59:20 +08:00
size 设置图片尺寸 size="0,0"或者不写代表使用图片原尺寸
isDrag 设置是否可以拖拽
position 图片初始位置-->
<Action type="ImageTip" path="骨刀.png" isDrag="true" size="100,100" position="0,0"></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-03-25 10:46:22 +08:00
<!--弹窗 btns可支持多个按钮
如果value中包含{Score} 则{Score}会替换成当前模块实际得分来显示-->
<Action type="TipWindow" value="恭喜你完成当前模块 得分:{Score}" btns="确定,取消" audio=""></Action>
2025-01-08 16:04:48 +08:00
<!--动态更换材质球和主贴图 材质球优先级高于贴图 同时写的情况下 先换材质球再换贴图-->
<Action type="Mat" value="Models/zhudao/nan_shoushufu.012" matName="yiyongshoutao_yellow1" index="1" mainTexture="贴图名字"></Action>
2025-01-13 15:14:02 +08:00
2025-02-08 17:30:04 +08:00
2025-02-10 10:54:47 +08:00
<!--3D展示
3D展示的UI界面 是自动启动 但需要使用UIShow手动关闭
关闭的监听可以使用Btns与UIClick配合
属性解释:
Object 是要展示的物体 与 Device配合使用
postion rotate scale是物体初始位置和旋转
rotateSpeed 按住鼠标左键的旋转速度
moveSpeed 按住鼠标右键的移动速度
distance 是相机默认距离物体的距离
distanceMin 和 distanceMax 是相机远近的最小和最大值
pitchMin和pitchMax 是相机俯仰角范围
-->
<Action type="3DObjShow">
<Object deviceName="器械盒" position="10000,10000,10000" rotate="0,90,0" rotateSpeed="11" moveSpeed="0.12" distance="0.25" pitchMin="-31" pitchMax="81" distanceMin="0.3" distanceMax="10"></Object>
<Object deviceName="创巾钳"></Object>
</Action>
2024-12-19 11:05:02 +08:00
<!--预加载模块 要在app.xml的Data标签内-->
<PreLoad>
<Action type="Parallel">
<Action type="LoadRes" value="Pig.xml" resType="xml" index="1"></Action>
2024-12-19 11:05:02 +08:00
</Action>
</PreLoad>
2024-12-17 09:50:47 +08:00
<Module>
<!--场景名字-->
<Scene>Scene</Scene>
<!--Study学习模式 Exam实训模式 All都有-->
<Type>Study</Type>
<!--右上角显示成绩的时候 是否只显示当前模块的-->
<OnlyCurScore>false</OnlyCurScore>
2025-03-24 17:43:19 +08:00
<!--
用于显示模块选择页面的 模块图标
图片存放于Data/Image/路径下面 可以自己构建子路径
-->
<Icon>图片名字</Icon>
2024-12-17 09:50:47 +08:00
<!--模块名字-->
<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>
2025-02-08 11:17:37 +08:00
<!--支持多行内容展示 \n为换行 支持富文本-->
<Tip>组织钳\n巴拉巴拉巴拉</Tip>
2024-12-17 17:29:03 +08:00
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<!--MeshCollider和Box只需要一个-->
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
2025-05-19 13:46:05 +08:00
<!--右键点击后的菜单 目前写死 拾取把device拾取到背包 丢弃:把背包中的device丢弃一个 其他的按钮使用UIClick自行配合状态机实现具体逻辑-->
<RightMenu values="拾取,丢弃,观察"/>
2024-12-17 17:29:03 +08:00
</Device>
2024-12-17 18:07:20 +08:00
2025-04-21 10:03:46 +08:00
<!--timeFormat用于控制输出到实验报告的操作时间格式
不需要年月日的时候 HH:mm:ss 即可
-->
2024-12-17 09:50:47 +08:00
<Score>
2025-04-21 10:03:46 +08:00
<Item step="术前准备" name="器械准备" sum="6.5" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="术前准备" name="药品准备" sum="5.5" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="术前准备" name="耗材准备" sum="15.5" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="术前准备" name="主刀人员准备" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="术前准备" name="手术动物准备" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="术前准备" name="术部剃毛准备" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="术前准备" name="术部消毒准备" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="手术过程" name="测试麻醉程度" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="手术过程" name="术部开刀" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="手术过程" name="找出病变小肠" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="手术过程" name="去除病变小肠" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="手术过程" name="肠端吻合" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="手术过程" name="缝合切口" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
<Item step="手术过程" name="缝合后处理" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
2024-12-17 09:50:47 +08:00
</Score>
2025-02-08 17:30:04 +08:00
<!--步骤操作 相同的moduleType 仅支持一个 name用于切换操作模块使用-->
<Operation name="模块名字" 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>
2025-04-08 17:17:27 +08:00
<!--知识点
title对应左侧树状图的名字
bgImage是右侧的长图
Component是长图上挂在的组件 目前仅支持Type=Button的按钮类型
Action是动作组 点击按钮后的动作
Component标签与bgImage属性 可以在根节点Knowledge上也可以在子节点Item上
位于根节点时 是全局的 位于Item节点时是切换Item后展示的针对与Item的
-->
<Knowledge bgImage="Knowledge/ChangTu.png">
<Item title="第一步" setPos="0,0">
<Item title="第一步_第一个子步骤" bgImage="" setPos="0,100">
<Component type="Button" size="200,200" pos="200,-200">
<Action type="Log" value="第二步_第二个子步骤"></Action>
</Component>
<Component type="Button" size="200,200" pos="400,-200">
<Action type="Log" value="第二步_第二个子步骤"></Action>
</Component>
</Item>
</Item>
<Item title="第二步" setPos="0,400">
<Item title="第二步_第一个子步骤" bgImage="" setPos="0,500">
<Component type="Button" size="200,200" pos="200,-400">
<Action type="Log" value="第二步_第二个子步骤"></Action>
</Component>
<Component type="Button" size="200,200" pos="400,-400">
<Action type="Log" value="第二步_第二个子步骤"></Action>
</Component>
</Item>
<Item title="第二步_第二个子步骤" bgImage="" setPos="0,600"></Item>
</Item>
<Component type="Button" size="932,526" pos="20,-9653">
<Action type="Sequence">
<Action type="Log" value="第一步_第一个子步骤"></Action>
<Action type="Video" value="test.mp4" size="500,500" offset="10,10" finishedEvent="finished" closeEvent="close"></Action>
</Action>
</Component>
</Knowledge>
2024-12-17 09:50:47 +08:00
<!--动作组-->
<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 name="状态机的名字 必须有且唯一">
2024-12-17 09:50:47 +08:00
<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>
2025-04-08 17:17:27 +08:00
</State>
2024-12-17 09:50:47 +08:00
<Transision from="any" to="状态1">
2025-04-08 17:17:27 +08:00
<Condition type="UIClick" value="Cube"></Condition>
2024-12-17 09:50:47 +08:00
</Transision>
<Transision from="初始状态" to="状态2">
<Condition type="ObjClick" value="Cube (1)"></Condition>
</Transision>
</FSM>
</Module>
2025-03-11 13:59:38 +08:00
<Body3D>
<Body name="头颈" icon="" path="Ren_NEW/SM_GuGe/skull" FocusDistance="1" audio="" tip="">
<Body name="骨骼系统" path="Ren_NEW/SM_GuGe" >
<Body name="左肋骨" path="Ren_NEW/SM_GuGe/upper_limb_bone">
<Body name="左肋" path="Ren_NEW/SM_GuGe/upper_limb_bone/Left_upper_limb_bones">
<Body name="左一" path="Ren_NEW/SM_GuGe/upper_limb_bone/Left_upper_limb_bones/Left_free_upper_limb_bones" tip="左一肋骨描述">
<ObjectToggle>
<Color isOn="0,255,255" isOff="255,255,255"></Color>
2025-04-08 17:17:27 +08:00
</ObjectToggle>
2025-03-11 13:59:38 +08:00
</Body>
<Body name="左二" path="Ren/Tou/GuGe/LeiGu/ZuoLei/2" tip="左二肋骨描述">
<ObjectToggle>
<Color isOn="0,255,255" isOff="255,255,255"></Color>
</ObjectToggle>
</Body>
</Body>
2025-04-08 17:17:27 +08:00
2025-03-11 13:59:38 +08:00
<Body name="右肋" path="Ren/Tou/GuGe/LeiGu/YouLei">
<Body name="右一" path="Ren/Tou/GuGe/LeiGu/YouLei/1" tip="7右一肋骨描述">
<ObjectToggle>
<Color isOn="0,255,255" isOff="255,255,255"></Color>
</ObjectToggle>
</Body>
<Body name="右二" path="Ren/Tou/GuGe/LeiGu/YouLei/2" tip="右二肋骨描述">
<ObjectToggle>
<Color isOn="0,255,255" isOff="255,255,255"></Color>
</ObjectToggle>
</Body>
</Body>
</Body>
</Body>
<Body name="皮肤系统" path="Ren/Tou/PiFu" isShow="false">
<Body name="肋骨" path="Ren/Tou/PiFu/LeiGu">
<Body name="左肋" path="Ren/Tou/PiFu/LeiGu/ZuoLei">
<Body name="左一" path="Ren/Tou/PiFu/LeiGu/ZuoLei/1"></Body>
<Body name="左二" path="Ren/Tou/PiFu/LeiGu/ZuoLei/2"></Body>
</Body>
<Body name="右肋" path="Ren/Tou/PiFu/LeiGu/YouLei">
<Body name="右一" path="Ren/Tou/PiFu/LeiGu/YouLei/1"></Body>
<Body name="右二" path="Ren/Tou/PiFu/LeiGu/YouLei/2"></Body>
</Body>
</Body>
</Body>
<Body name="肌肉" isBodyList="true" path="Ren/Tou/JiRou">
<Body name="111" path="Ren/Tou/JiRou/1">
<ObjectToggle>
<Color></Color>
</ObjectToggle>
</Body>
<Body name="动脉" path="Ren_NEW/SM_DongMai">
<ObjectToggle>
<Color></Color>
</ObjectToggle>
</Body>
<Body name="静脉" path="Ren/Tou/JiRou/3">
<ObjectToggle>
<Color></Color>
</ObjectToggle>
</Body>
</Body>
2025-04-08 17:17:27 +08:00
<Body name="神经" isBodyList="true">
2025-03-11 13:59:38 +08:00
<Body name="aaa" path="Ren/Tou/ShenJing/1">
<ObjectToggle>
<Color></Color>
</ObjectToggle>
</Body>
<Body name="bbb" path="Ren/Tou/ShenJing/2">
<ObjectToggle>
<Color></Color>
</ObjectToggle>
</Body>
<Body name="ccc" path="Ren/Tou/ShenJing/3">
<ObjectToggle>
<Color></Color>
</ObjectToggle>
</Body>
</Body>
2025-04-08 17:17:27 +08:00
2025-03-11 13:59:38 +08:00
</Body>
</Body3D>
</示例>