VirtualFramework/Doc/Xml配置文档.xml

579 lines
28 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>
<!--显示得分UI界面 onlyCurModule 是否仅显示当前模块成绩 默认为false-->
<Action type="ShowScore" onlyCurModule="true"></Action>
<!--切换operation模块 使用此功能 operation的配置中必须有name属性
name为operation配置中的name
执行此行后 不需要在执行NextOperationAction 框架底层执行了
此行之后 会停止当前的Action组 此行代码要放到最后执行 后期针对此加控制参数-->
<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>
<!--右下角生成按钮 可生成多个 用逗号分开-->
<Action type="Btns" value="按钮1,按钮2,按钮3"></Action>
<!--用于右侧道具栏选择正确的道具 event用于配合StrEventCondition 做检测
rightScore 正确选择一个 得分 wrongScore 错误一个 得分 scoreStepName是评分的key
autoHide =-1 则点击结束 否则 等待对应时间后自动结束
totalScore 是配合wrongScore的用于初始化一个分数 然后选择扣分
random 是否打乱devices的顺序
scrollSpeed 鼠标滚轮的滑动速度
position left/right 可以让道具栏在左侧或者右侧
errorCount 错误的次数 不 为0的情况下 大于这个次数才会触发WrongScore-->
<Action type="UITools" devices="道具名字1" answers="正确道具"
setActive="true"
rightLabel="提示:器械选择正确。"
wrongLabel="提示:器械选择错误,\r\n当前模块中不需要该物品。"
rightEvent=""
wrongEvent=""
rightScore=""
wrongScore=""
totalScore=""
scoreStepName="手术准备器械选择"
autoHide="-1"
random="true"
scrollSpeed="25"
position="right"
wrongCount="0"></Action>
<!--道具背包,用于配合状态机进行道具的使用 目前是初步版本仅支持配合UIClick点击暂无道具数量等功能 详细参数可参考UITools-->
<Action type="UIBackPack" devices="道具名字1"
random="true"
scrollSpeed="25"
position="right"></Action>
<!--物体点位选择 物体的中心点-->
<Action type="PointQuestion" value="路径1,路径2"></Action>
<!--物体点位选择 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>
<!--输入框
title 显示的题目
Input 为输入框(可多个) var里面存储是输入值
btn 为按钮(可多个)
checkAnswer 是否开启检查答案
answer 是正确答案 用|分割 可以支持多个正确答案
wrongLabel 输入错误的提示文字
wrongCount 错误后重新输入的次数
autoHide 错误弹窗自动消失的停留时间
scoreStepName 对应Score
rightScore 答对的分数
wrongScore错误的分数 (每错一次扣一次分)
-->
<Action type="Input" title="请输入" finishedEvent="UI关闭事件通知用StrEvent接收">
<Input name="数字1:" var="变量1" answer="100|200"></Input>
<Input name="数字2:" var="变量2" answer="200|400"></Input>
<Btn name="确定" clickEvent="确定点击" checkAnswer="true" wrongLabel="输入错误" wrongCount="3" autoHide="-1" scoreStepName="" rightScore="0" wrongScore="-1"></Btn>
<Btn name="取消"></Btn>
</Action>
<!--文字选择题 scoreName="分数名"
rightScore="5" 可以是正确加分
wrongScore="-5" 也可以是错误减分
absolutely="false" true错一个选项就扣全部分 false按错的选项数量来算分
format="{0:F1}" F1代表保留1位小数 F2代表2位 F0代表不保留小数
注意rightScore与wrongScore不能同时存在 同时存在则只生效rightScore
finishedEvent 用于监听选择题UI消失
optionType 0 根据答案数量自动判断单选还是多选 1 单选 2多选
-->
<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>
<!--提示 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的按钮操作来
如果不配置 nearPos或者normalPos 则自动隐藏对应的视角UI按钮
VR版 单独的相机位置使用vrPos和vrRot来配置
-->
<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>
<!--文字弹窗 按钮可以多个 点击事件使用UIClick
alpha 0-1 背景的透明度
-->
<Action type="TextTip" title="这里是标题" value="这里是文字描述" audio="q001.mp3" btns="确定,取消" alpha="0.5"/>
<!--文字窗口 用于用一直存在的 非弹窗类需求-->
<Action type="TextWindow" title="这里是标题" value="这里是文字描述" audio="q001.mp3" btns="确定,取消" position="left" scrollSpeed="25"/>
<!--锁定镜头 true为开启 false为锁定 isMove是移动镜头 isRotate是旋转镜头-->
<Action type="CameraLock" isMove="true" isRotate="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
如果deviceName存在 则不用isDevice
-->
<Action type="Show" value="SM_QvanChangJing/sence/pPlane1" deviceName="设备名字" isShow="false" isDevice="false"></Action>
<!--设置物体高亮 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>
<!--设置物体高亮 deviceName可以用于设备名字 value是物体路径 color是rgba isHigh设置是否显示高亮 isIndependent为true 可以避免模型高亮被遮挡
time是从不显示到完全显示的时间
count是循环 -1为无限循环需要主动关闭
当count不为-1时 可以使用finishedEvent配合strEvent做闪烁结束的监听
visibility: 有三种形式 Normal, AlwaysOnTop,OnlyWhenOccluded
-->
<Action type="HighLightFlash" deviceName="测试" isHigh="true" color="0,255,0,255" time="1" count="-1" finishedEvent="等待" visibility="Normal"></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>
<!--判断物体点击 支持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>
<!--判断键盘输入 这里的value对应的是KeyCode枚举-->
<Condition type="Input" value="A"></Condition>
<!--判断变量名i是否等于1-->
<Condition type="Var" name="变量名" value="1"></Condition>
<!--字符串类型的事件监听 UI中的事件监听都 也可以自定义事件监听-->
<Condition type="StrEvent" value="器械选择通过"></Condition>
<!--身上是否存有某个道具 count默认为1 可以判断数量 如身上有某个道具20个-->
<Condition type="HasDevice" deviceName="道具名" count="1"></Condition>
<!--判断是否距离某个点 在某个范围内 ignoreY 是否忽略Y方向的距离-->
<Condition type="Distance" value="10" targetPos="0,0,0" ignoreY="false"></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="关闭弹窗事件" autoHide="1"></Action>
<!--图片弹窗
path 为Data/Image/下的路径
size 设置图片尺寸 size="0,0"或者不写代表使用图片原尺寸
isDrag 设置是否可以拖拽
position 图片初始位置-->
<Action type="ImageTip" path="骨刀.png" isDrag="true" size="100,100" position="0,0"></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>
<!--用于刷新骨骼动画执行后 meshCollider最后的位置-->
<Action type="SkinnedBake" value="路径和DeviceName二选一" deviceName="肠钳"></Action>
<!--通用事件通知
HighLightTriggervalue=false 关闭device悬浮高亮 value=true 开启
-->
<Action type="StrEvent" name="HighLightTrigger" value="false"></Action>
<!--支持deviceName isWait是只Action是否等待结束 frame 从哪一帧开始播放 endFrame 从哪一帧结束-->
<Action type="TimeLine" value="Models/CZ_FengXian_Timeline" isShow="true" finishedEvent="播放完毕" isWait="true" frame="140" endFrame="240"></Action>
<!--弹窗 btns可支持多个按钮
如果value中包含{Score} 则{Score}会替换成当前模块实际得分来显示-->
<Action type="TipWindow" value="恭喜你完成当前模块 得分:{Score}" btns="确定,取消" audio=""></Action>
<!--动态更换材质球和主贴图 材质球优先级高于贴图 同时写的情况下 先换材质球再换贴图-->
<Action type="Mat" value="Models/zhudao/nan_shoushufu.012" matName="yiyongshoutao_yellow1" index="1" mainTexture="贴图名字"></Action>
<!--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>
<!--预加载模块 要在app.xml的Data标签内-->
<PreLoad>
<Action type="Parallel">
<Action type="LoadRes" value="Pig.xml" resType="xml" index="1"></Action>
</Action>
</PreLoad>
<!--2DTip指引targetName目标物体名称。offSet指引偏移。showName文字组件显示名称
tiptitle tip自身是一个按钮点击之后textWindow显示不同的文字和音频
tipaudio
-->
<Action type="UIGuideTip"
targetName="棱柱上底面,棱柱上底面边长,棱柱底面,棱柱底面边长,棱柱侧面,侧棱,棱柱棱高,棱柱顶点"
offSet="200,100,0|-200,100,0|-200,-80,0|250,50,0|-250,50,0|300,0,0|-300,50,0|-200,150,0"
showName="棱柱上底面,棱柱上底面边长,棱柱底面,棱柱底面边长,棱柱侧面,侧棱,棱柱棱高,棱柱顶点"
tiptext="
互相平行的两个面叫作棱柱的底面,位于棱柱上面,叫上底面。|
上底面的边长叫做棱柱的上底面边长|
互相平行的两个面叫作棱柱的底面,位于棱柱下面,叫底面。|
底面的边长叫做棱柱的底面边长|
棱柱其余各面叫作棱柱的侧面|
相邻两个侧面的公共边叫作棱柱的侧棱|
两个底面间的距离叫作棱柱的高|
底面边长与侧棱汇交的点叫做棱柱的顶点。"
tipaudio="
sound4.mp3|
sound5.mp3 |
sound6.mp3|
sound7.mp3 |
sound8.mp3 |
sound9.mp3 |
sound10.mp3 |
sound11.mp3"
tiptitle="棱柱上底面|棱柱上底面边长|棱柱底面|棱柱底面边长|棱柱侧面|侧棱|棱柱棱高|棱柱顶点"
></Action>
<!--查找到对应物体使用滑动条控制他的blendshape。title是预制体的标签文字-->
<Action type="UISliderAnim" title="棱柱倾斜度|底面边长|上底面边长|棱高" targetObj="Main/A_SM_LengZhu"> </Action>
<Module>
<!--场景名字-->
<Scene>Scene</Scene>
<!--Study学习模式 Exam实训模式 All都有-->
<Type>Study</Type>
<!--右上角显示成绩的时候 是否只显示当前模块的-->
<OnlyCurScore>false</OnlyCurScore>
<!--
用于显示模块选择页面的 模块图标
图片存放于Data/Image/路径下面 可以自己构建子路径
-->
<Icon>图片名字</Icon>
<!--模块名字-->
<Name>模块1</Name>
<Descript>
这里是实训描述内容.....
巴拉巴拉....
</Descript>
<Device>
<Name>组织钳</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/zuzhiqian</Path>
<!--支持多行内容展示 \n为换行 支持富文本-->
<Tip>组织钳\n巴拉巴拉巴拉</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<!--MeshCollider和Box只需要一个-->
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
<!--右键点击后的菜单 目前写死 拾取把device拾取到背包 丢弃:把背包中的device丢弃一个 其他的按钮使用UIClick自行配合状态机实现具体逻辑-->
<RightMenu values="拾取,丢弃,观察"/>
</Device>
<!--timeFormat用于控制输出到实验报告的操作时间格式
不需要年月日的时候 HH:mm:ss 即可
-->
<Score>
<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"/>
</Score>
<!--步骤操作 相同的moduleType 仅支持一个 name用于切换操作模块使用-->
<Operation name="模块名字" 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>
<!--知识点
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>
<!--动作组-->
<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="状态机的名字 必须有且唯一">
<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="UIClick" value="Cube"></Condition>
</Transision>
<Transision from="初始状态" to="状态2">
<Condition type="ObjClick" value="Cube (1)"></Condition>
</Transision>
</FSM>
</Module>
<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>
</ObjectToggle>
</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>
<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>
<Body name="神经" isBodyList="true">
<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>
</Body>
</Body3D>
</示例>