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>
|
2024-12-30 10:40:39 +08:00
|
|
|
|
<!--播放动画 reset=true则动画停在第一帧 frame是指定格在动画的某一帧 如果为-1 正常播放动画 speed 动画播放速度 默认为1 -->
|
|
|
|
|
|
<Action type="Anim" value="物体路径" animName="动画名字" frame="-1" speed="1"></Action>
|
2024-12-17 09:50:47 +08:00
|
|
|
|
<!--右下角生成按钮 可生成多个 用逗号分开-->
|
|
|
|
|
|
<Action type="Btns" value="按钮1,按钮2,按钮3"></Action>
|
2024-12-30 15:32:34 +08:00
|
|
|
|
<!--用于右侧道具栏选择正确的道具 event用于配合StrEventCondition 做检测 rightScore 正确选择一个 得分 wrongScore 错误一个 得分 scoreStepName是评分的key -->
|
2024-12-19 16:38:42 +08:00
|
|
|
|
<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=""
|
|
|
|
|
|
scoreStepName="手术准备器械选择"></Action>
|
2024-12-18 11:18:25 +08:00
|
|
|
|
|
2024-12-18 10:20:37 +08:00
|
|
|
|
<!--物体点位选择 物体的中心点-->
|
2024-12-17 09:50:47 +08:00
|
|
|
|
<Action type="PointQuestion" value="路径1,路径2"></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
|
|
|
|
|
|
-->
|
|
|
|
|
|
<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}"></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>
|
2024-12-31 16:24:35 +08:00
|
|
|
|
<!--镜头切换 近距离和默认 如果有了nearDevice就可以不用nearPos和nearRot了 按照device的坐标和旋转来处理镜头 normalDevice同理
|
2024-12-31 16:31:32 +08:00
|
|
|
|
只设置坐标 不执行镜头切换 是否执行要根据UI的按钮操作来
|
2024-12-31 16:24:35 +08:00
|
|
|
|
-->
|
2024-12-31 16:31:32 +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="确定,取消"/>
|
|
|
|
|
|
<!--锁定镜头 value为是否锁定-->
|
2024-12-23 11:30:18 +08:00
|
|
|
|
<Action type="CameraLock" value="true"></Action>
|
2024-12-17 18:07:20 +08:00
|
|
|
|
<!--播放视频 size为视频窗口大小 offset为窗口中心点偏移 播放完成事件和关闭事件 通常使用关闭事件即可
|
2024-12-18 09:41:34 +08:00
|
|
|
|
宽度不要小于500 否则进度条看不太清楚-->
|
2024-12-18 11:18:25 +08:00
|
|
|
|
<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
|
|
|
|
|
2024-12-23 11:30:18 +08:00
|
|
|
|
<!--物体显隐 用于3D物体 isShow=true为显示 false为隐藏 UI的显隐使用UIShow isDevice为true的话 value就要写device配置的Name-->
|
|
|
|
|
|
<Action type="Show" value="SM_QvanChangJing/sence/pPlane1" 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>
|
2024-12-27 14:08:27 +08:00
|
|
|
|
<!--判断物体点击-->
|
|
|
|
|
|
<Condition type="ObjClick" value="物体路径 可以使用快捷键Ctrl+Q获取"></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>
|
2024-12-19 16:38:42 +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 是否正确-->
|
|
|
|
|
|
<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二选一 colliderType:AddBox 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的语法 把<>括号转义 <代表< >代表>
|
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="这里是文字描述<color=#FF00FF>{0}</color>-{1}" time="5" values="5,10|50,100" format="{0:F1}" finishedEvent="close" needClick="false" reverse="false" ></Action>
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-12-31 17:06:00 +08:00
|
|
|
|
|
|
|
|
|
|
<!--通用事件通知
|
|
|
|
|
|
|
|
|
|
|
|
HighLightTrigger:value=false 关闭device悬浮高亮 value=true 开启
|
|
|
|
|
|
|
|
|
|
|
|
-->
|
|
|
|
|
|
<Action type="StrEvent" name="HighLightTrigger" value="false"></Action>
|
|
|
|
|
|
|
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>
|
|
|
|
|
|
|
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>
|
|
|
|
|
|
|
|
|
|
|
|
</示例>
|