VirtualFramework/Doc/Xml配置文档.xml
2024-12-31 16:31:32 +08:00

256 lines
13 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<示例>
<!--顺序执行完毕-->
<Action type="Sequence"></Action>
<!--同时执行完毕-->
<Action type="Parallel"></Action>
<!--只要任意满足就结束这个动作组-->
<Action type="Any"></Action>
<!--打印日志-->
<Action type="Log" value="进入初始状态"></Action>
<!--显示UI value是UI的名字 isShow 是显示还是隐藏-->
<Action type="UIShow" value="UIOperationList" isShow="false"></Action>
<!--移动物体 time是多长时间移动到目标位置 0是瞬间完成-->
<Action type="Move" value="Main Camera" to="18.162,2.113,3.22" time="0"></Action>
<!--旋转物体 time是多长时间旋转到目标位置 0是瞬间完成-->
<Action type="Rotate" value="Main Camera" to="0,180,0" time="0"></Action>
<!--缩放物体 time是多长时间旋转到目标位置 0是瞬间完成-->
<Action type="Scale" value="Main Camera" to="0,180,0" time="0"></Action>
<!--执行下一步左侧步骤列表 默认开始的时候为-1步 要主动调用一次才到第1步-->
<Action type="NextOperation"></Action>
<!--播放动画 reset=true则动画停在第一帧 frame是指定格在动画的某一帧 如果为-1 正常播放动画 speed 动画播放速度 默认为1 -->
<Action type="Anim" value="物体路径" animName="动画名字" frame="-1" speed="1"></Action>
<!--右下角生成按钮 可生成多个 用逗号分开-->
<Action type="Btns" value="按钮1,按钮2,按钮3"></Action>
<!--用于右侧道具栏选择正确的道具 event用于配合StrEventCondition 做检测 rightScore 正确选择一个 得分 wrongScore 错误一个 得分 scoreStepName是评分的key -->
<Action type="UITools" devices="道具名字1" answers="正确道具"
setActive="true"
rightLabel="提示:器械选择正确。"
wrongLabel="提示:器械选择错误,\r\n当前模块中不需要该物品。"
rightEvent=""
wrongEvent=""
rightScore=""
wrongScore=""
scoreStepName="手术准备器械选择"></Action>
<!--物体点位选择 物体的中心点-->
<Action type="PointQuestion" value="路径1,路径2"></Action>
<!--文字选择题 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>
<!--提示 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同理
只设置坐标 不执行镜头切换 是否执行要根据UI的按钮操作来
-->
<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>
<!--文字弹窗 按钮可以多个 点击事件使用UIClick-->
<Action type="TextTip" value="这里是文字描述" audio="q001.mp3" btns="确定,取消"/>
<!--锁定镜头 value为是否锁定-->
<Action type="CameraLock" value="true"></Action>
<!--播放视频 size为视频窗口大小 offset为窗口中心点偏移 播放完成事件和关闭事件 通常使用关闭事件即可
宽度不要小于500 否则进度条看不太清楚-->
<Action type="Video" value="test.mp4" size="500,500" offset="10,10" finishedEvent="finished" closeEvent="close"></Action>
<!--物体显隐 用于3D物体 isShow=true为显示 false为隐藏 UI的显隐使用UIShow isDevice为true的话 value就要写device配置的Name-->
<Action type="Show" value="SM_QvanChangJing/sence/pPlane1" isShow="false" isDevice="false"></Action>
<!--设置物体高亮 deviceName可以用于设备名字 value是物体路径 color是rgba isHigh设置是否显示高亮-->
<Action type="HighLight" deviceName="设备名字" value="路径" isHigh="true" color="0,255,0,255"></Action>
<!--延迟 value是秒-->
<Action type="Delay" value="2"></Action>
<!--
* 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>
<!--判断UI点击-->
<Condition type="UIClick" value="UI路径 可以使用快捷键Ctrl+Q获取"></Condition>
<!--判断物体点击-->
<Condition type="ObjClick" value="物体路径 可以使用快捷键Ctrl+Q获取"></Condition>
<!--判断键盘输入-->
<Condition type="Input" value="A"></Condition>
<!--判断变量名i是否等于1-->
<Condition type="Var" name="变量名" value="1"></Condition>
<!--字符串类型的事件监听 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>
<!--正确和错误的弹窗 isRight 是否正确-->
<Action type="ResultTip" value="这里是一个弹窗" isRight="true" finishedEvent="关闭弹窗事件"></Action>
<!--Led数字显示 要求每个数字单独一个模型面片,所有数字面片放在一个物体的子级,第一个物体是最右侧的数字,只能放数字面片模型 不要放其他的东西
number 是数值 支持 小数点和横线 例如 12.34 3-5 -->
<Action type="Led" value="Number" number="12.34" color="255,0,0,255"></Action>
<!--删除场景中的物体-->
<Action type="Destroy" value="路径"/>
<!--给程序使用的:自定义脚本 挂空预制体上 预制体放在Resources/CustomAction目录下 执行完毕后记得使用StringEventSystem.Global.Send(finishedEvent)-->
<Action type="Script" value="MyAction" finishedEvent="111"/>
<!--
给物体设置Collider value是物体路径 DeviceName是Device名字 与path二选一 colliderTypeAddBox AddMesh Remove Active
当colliderType为AddBox的时候 args用|分割后 第一个参数是 中心点 第二个参数是box碰撞的大小
当colliderType为Active的时候 args为false或者是true
当colliderType为AddMesh和Remove的时候 args不需要
-->
<Action type="Collider" value="路径和DeviceName二选一" deviceName="肠钳" colliderType="AddBox" args="0,0,0|1,1,1"></Action>
<!--
倒计时动画 value是文字描述 支持富文本 要按照xml的语法 把<>括号转义 &lt;代表< &gt;代表>
time是动画时间
values 支持多个动画 使用C#的{0} {1} 对应values的|分割后的数据 5,10 是从5到10的意思
finishedEvent 是倒计时结束后的回调
needClick如果为true 动画结束后不会自动小时 需要点击空白处
reverse 是时钟倒计时动画是否倒序播放
format="{0:F1}" F1代表保留1位小数 F2代表2位 F0代表不保留小数
-->
<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>
<!--预加载模块 要在app.xml的Data标签内-->
<PreLoad>
<Action type="Parallel">
<Action type="LoadRes" value="Pig.xml" resType="xml"></Action>
</Action>
</PreLoad>
<Module>
<!--场景名字-->
<Scene>Scene</Scene>
<!--Study学习模式 Exam实训模式 All都有-->
<Type>Study</Type>
<!--模块名字-->
<Name>模块1</Name>
<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>
<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 仅支持一个-->
<Operation moduleType="Exam" freeStep="false">
<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>
<Finished>
<Action type="Sequence">
</Action>
</Finished>
</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>
</示例>