This commit is contained in:
李浩 2024-12-19 10:30:32 +08:00
commit d133a63981
12 changed files with 1486 additions and 116 deletions

View File

@ -1,11 +1,8 @@
using QFramework;
using QFramework.Example;
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Burst.CompilerServices;
using UnityEngine;
using XMLTool;
public class ActionHelper
@ -164,6 +161,19 @@ public class ActionHelper
var strAction = (XMLTool.StringListAction)act;
return HighLightAction.Allocate(act.Value, strAction.args[0], strAction.args[1]);
}
case "LoadRes":
{
var strAction = (XMLTool.StringListAction)act;
return LoadResAction.Allocate(act.Value, strAction.args[0]);
}
case "Audio":
{
var strAction = (XMLTool.StringListAction)act;
return AudioAction.Allocate(act.Value, strAction.args[0], strAction.args[1], strAction.args[2], strAction.args[3], strAction.args[4]);
}
default:
Debug.LogError($"ûÓÐÕÒµ½´ËActionµÄÀàÐÍ{act.Type}");
break;
}
break;
case XMLTool.Condition condition:

View File

@ -0,0 +1,167 @@
using System;
using UnityEngine;
namespace QFramework
{
internal class AudioAction : IAction
{
public System.Action OnFinished { get; set; }
private AudioAction()
{
}
private static readonly SimpleObjectPool<AudioAction> mPool =
new SimpleObjectPool<AudioAction>(() => new AudioAction(), null, 10);
public string path;
public string audioType;
bool loop = false;
public bool waitFinished = true;
bool isPlay = true;
float volume;
ResLoader loader;
public static AudioAction Allocate(string path, string audioType, string loop, string waitFinished, string volume, string isPlay, System.Action OnFinished = null)
{
var retNode = mPool.Allocate();
retNode.ActionID = ActionKit.ID_GENERATOR++;
retNode.Deinited = false;
retNode.Reset();
retNode.path = path;
retNode.audioType = audioType;
bool.TryParse(loop, out retNode.loop);
bool.TryParse(waitFinished, out retNode.waitFinished);
retNode.OnFinished = OnFinished;
bool.TryParse(isPlay, out retNode.isPlay);
if (string.IsNullOrEmpty(volume))
{
retNode.volume = AudioKit.Settings.MusicVolume.Value;
}
else
{
float.TryParse(volume, out retNode.volume);
}
return retNode;
}
public ulong ActionID { get; set; }
public ActionStatus Status { get; set; }
public void OnStart()
{
if (isPlay)
{
loader = ResLoader.Allocate();
string audioPath = Global.audioPath + path;
loader.Add2Load(audioPath.ToLocalAudioResName(), (success, res) =>
{
if (success)
{
AudioClip clip = res.Asset.As<AudioClip>();
switch (audioType)
{
case "Music":
if (waitFinished == false)
{
this.Finish();
AudioKit.PlayMusic(clip, loop: loop);
}
else
{
AudioKit.PlayMusic(clip, loop: loop, onEndCallback: OnPlayFinished);
}
break;
case "Voice":
if (waitFinished == false)
{
this.Finish();
AudioKit.PlayVoice(clip, loop: loop);
}
else
{
AudioKit.PlayVoice(clip, loop: loop, onEndedCallback: OnPlayFinished);
}
break;
case "Sound":
if (waitFinished == false)
{
this.Finish();
AudioKit.PlaySound(clip, loop: loop);
}
else
{
AudioKit.PlaySound(clip, loop: loop, callBack: OnSoundPlayFinished);
}
break;
}
}
});
loader.LoadAsync();
}
else
{
switch (audioType)
{
case "Music":
AudioKit.StopMusic();
break;
case "Voice":
AudioKit.StopVoice();
break;
case "Sound":
AudioKit.StopAllSound();
break;
}
}
}
public void OnPlayFinished()
{
Debug.LogError("OnPlayFinished");
this.Finish();
}
public void OnSoundPlayFinished(AudioPlayer player)
{
OnPlayFinished();
}
public void OnExecute(float dt)
{
}
public void OnFinish()
{
}
public void Reset()
{
Status = ActionStatus.NotStart;
Paused = false;
}
public bool Paused { get; set; }
public void Deinit()
{
if (!Deinited)
{
OnFinished = null;
Deinited = true;
//loader.Recycle2Cache();
mPool.Recycle(this);
}
}
public bool Deinited { get; set; }
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 701ece2f3b3a0ab448541d3fbfc67087
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,102 @@
using System;
using System.Xml.Linq;
using UnityEngine;
using XMLTool;
namespace QFramework
{
internal class LoadResAction : IAction
{
public System.Action OnFinished { get; set; }
private LoadResAction()
{
}
private static readonly SimpleObjectPool<LoadResAction> mPool =
new SimpleObjectPool<LoadResAction>(() => new LoadResAction(), null, 10);
string fileName;
string type;
public static LoadResAction Allocate(string fileName, string type, System.Action OnFinished = null)
{
var retNode = mPool.Allocate();
retNode.ActionID = ActionKit.ID_GENERATOR++;
retNode.Deinited = false;
retNode.Reset();
retNode.fileName = fileName;
retNode.type = type;
retNode.OnFinished = OnFinished;
return retNode;
}
public ulong ActionID { get; set; }
public ActionStatus Status { get; set; }
public void OnStart()
{
ResLoader resLoader = ResLoader.Allocate();
string path = Global.xmlPath + fileName;
switch (type)
{
case "xml":
resLoader.Add2Load(path.ToLocalTextResName(), (success, res) =>
{
if (success)
{
string xmlStr = res.Asset.As<StringAsset>().text;
if (string.IsNullOrEmpty(xmlStr) == false)
{
// ¼ÓÔØXML
XDocument doc = XDocument.Parse(xmlStr);
// »ñÈ¡¸ùÔªËØ
XElement moduleXml = doc.Root;
XmlParser.LoadModule(moduleXml, Global.Instance.appData);
}
}
});
break;
}
resLoader.LoadAsync(() =>
{
resLoader.Recycle2Cache();
this.Finish();
});
}
public void OnExecute(float dt)
{
}
public void OnFinish()
{
}
public void Reset()
{
Status = ActionStatus.NotStart;
Paused = false;
}
public bool Paused { get; set; }
public void Deinit()
{
if (!Deinited)
{
OnFinished = null;
Deinited = true;
mPool.Recycle(this);
}
}
public bool Deinited { get; set; }
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0c2b87ed3cbc0554d8644f0ae736cc6f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,16 @@
using QFramework;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PreLoadController : MonoSingleton<PreLoadController>
{
public ResLoader resLoader => ResLoader.Allocate();
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b7e736c25d5d0de44967b40031251f32
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -18,6 +18,7 @@ public class Global : Singleton<Global>
public static string appXmlPath = dataPath + "/App.xml";
public static string imagePath = dataPath + "/Image/";
public static string videoPath = dataPath + "/Video/";
public static string xmlPath = dataPath + "/Xml/";
public static APPSetting appSetting { get; } = new APPSetting();
public enum AppType

View File

@ -18,7 +18,7 @@ public class Launch : MonoBehaviour
IEnumerator StartApp()
{
yield return ResKit.InitAsync();
bool isLoadFinished = false;
loader.Add2Load(Global.appXmlPath.ToLocalTextResName(), (success, res) =>
{
if (success)
@ -29,13 +29,20 @@ public class Launch : MonoBehaviour
loader.LoadAsync(() =>
{
isLoadFinished = true;
ActionKit.Delay(2f, () =>
{
loader.Recycle2Cache();
loader = null;
});
});
yield return UIKit.OpenPanelAsync<UILoading>();
yield return new WaitUntil(() => isLoadFinished == true);
yield return ActionHelper.GetActionAndSub(Global.Instance.appData.preLoad.action).Start(this);
yield return UIKit.OpenPanelAsync<UIModeSelect>();
UIKit.HidePanel<UILoading>();
// ÔÝʱ²»ÓÃ
//foreach (var item in Global.Instance.appData.ActionDict)
@ -45,5 +52,10 @@ public class Launch : MonoBehaviour
//}
}
IEnumerator PreLoad()
{
yield return null;
}
}

View File

@ -1,18 +1,19 @@
using QFramework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
using UnityEngine;
using UnityEngine.Assertions.Must;
namespace XMLTool
{
public class AppData
{
public PreLoad preLoad;
public List<Module> Modules { get; set; }
}
public class PreLoad
{
public Action action;
}
public class Module
{
@ -133,11 +134,38 @@ namespace XMLTool
// ³õʼ»¯AppData¶ÔÏó
AppData appData = new AppData
{
preLoad = new PreLoad(),
Modules = new List<Module>(),
};
// »ñȡģ¿éÔªËØ
// 解析预加载动作
var preLoadElement = appDataElement.Element("PreLoad");
foreach (XElement actionElement in preLoadElement.Elements("Action"))
{
var action = ParseAction(actionElement);
appData.preLoad.action = action;
}
// 加载模块数据
LoadModules(appDataElement, appData);
return appData;
}
public static void LoadModules(XElement appDataElement, AppData appData)
{
foreach (XElement moduleElement in appDataElement.Elements("Module"))
{
LoadModule(moduleElement, appData);
}
}
public static void LoadModule(XElement moduleElement, AppData appData)
{
if (moduleElement != null)
{
@ -265,8 +293,6 @@ namespace XMLTool
}
}
}
return appData;
}
public static Step ParserStep(XElement stepNode, Step parent)
{
@ -658,6 +684,73 @@ namespace XMLTool
newAction = act;
}
break;
case "LoadRes":
{
var act = new StringListAction();
XAttribute resType = action.Attribute("resType");
if (resType != null)
{
act.args.Add(resType.Value);
}
else
{
act.args.Add("");
}
newAction = act;
}
break;
case "Audio":
{
//string path, string audioType, string loop, string finishedEvent, string volume,
var act = new StringListAction();
XAttribute audioType = action.Attribute("audioType");
if (audioType != null)
{
act.args.Add(audioType.Value);
}
else
{
act.args.Add("Sound");
}
XAttribute loop = action.Attribute("loop");
if (loop != null)
{
act.args.Add(loop.Value);
}
else
{
act.args.Add("false");
}
XAttribute waitFinished = action.Attribute("waitFinished");
if (waitFinished != null)
{
act.args.Add(waitFinished.Value);
}
else
{
act.args.Add("");
}
XAttribute volume = action.Attribute("volume");
if (volume != null)
{
act.args.Add(volume.Value);
}
else
{
act.args.Add("");
}
XAttribute isPlay = action.Attribute("isPlay");
if (isPlay != null)
{
act.args.Add(isPlay.Value);
}
else
{
act.args.Add("true");
}
newAction = act;
}
break;
default:
newAction = new Action();
break;

929
Data/Xml/Pig.xml Normal file
View File

@ -0,0 +1,929 @@
<?xml version="1.0" encoding="utf-8"?>
<Module>
<Scene>Scene</Scene>
<Type>All</Type>
<Name>模块2</Name>
<Device>
<Name>骨刀</Name>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>撬骨板</Name>
<Icon>工具/撬骨板.png</Icon>
</Device>
<Device>
<Name>手术刀柄4号</Name>
<Icon>工具/手术刀柄4号.png</Icon>
</Device>
<Device>
<Name>手术刀片16号</Name>
<Icon>工具/手术刀片16号.png</Icon>
</Device>
<Device>
<Name>铁锤</Name>
<Icon>工具/铁锤.png</Icon>
</Device>
<Device>
<Name>咬骨钳</Name>
<Icon>工具/咬骨钳.png</Icon>
</Device>
<Device>
<Name>T管</Name>
<Icon>耗材/T管.png</Icon>
</Device>
<Device>
<Name>冲洗管</Name>
<Icon>耗材/冲洗管.png</Icon>
</Device>
<Device>
<Name>钢丝</Name>
<Icon>耗材/钢丝.png</Icon>
</Device>
<Device>
<Name>骨钉</Name>
<Icon>耗材/骨钉.png</Icon>
</Device>
<Device>
<Name>骨蜡</Name>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>Vetwish软骨素</Name>
<Icon>药品/Vetwish软骨素.png</Icon>
</Device>
<Device>
<Name>美洛昔康</Name>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<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"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>肠钳</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/changqian</Path>
<Tip>肠钳</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>无齿海绵钳</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/wuchihaimianqian</Path>
<Tip>无齿海绵钳</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>S拉钩</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/pasted__SM_LaGou</Path>
<Tip>S拉钩</Tip>
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>肾形盘</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/pasted__SM_ShenXingPan</Path>
<Tip>肾形盘</Tip>
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>器械盒</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/pasted__polySurface114</Path>
<Tip>器械盒</Tip>
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>创巾钳</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/chuangjinqian</Path>
<Tip>创巾钳</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>直止血钳</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/zhizhixueqian</Path>
<Tip>直止血钳</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>弯止血钳</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/wanzhixueqian</Path>
<Tip>弯止血钳</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>持针钳</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/chizhenqian</Path>
<Tip>持针钳</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>钝剪</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/dunjian</Path>
<Tip>钝剪</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>尖剪</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/jianjian</Path>
<Tip>尖剪</Tip>
<BoxCollider size="0.15,0.05,0.06" center="-0.03,0,0"/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>无齿镊</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/pasted__pPlane4</Path>
<Tip>无齿镊</Tip>
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>手术刀柄3号</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/pasted__SM_ShouShuDaoBing</Path>
<Tip>手术刀柄3号</Tip>
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>刀片23号</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_JianZiLei/pasted__SM_DaoPian23</Path>
<Tip>刀片23号</Tip>
<MeshCollider/>
<Icon>工具/骨刀.png</Icon>
</Device>
<Device>
<Name>速眠新</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/SM_sumianxin</Path>
<Tip>速眠新</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>头孢噻呋</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__SM_TouBao</Path>
<Tip>头孢噻呋</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>VC</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__SM_VC</Path>
<Tip>VC</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>硫酸阿托品</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__SM_ATuoPin</Path>
<Tip>硫酸阿托品</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>ATP</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__SM_SanLinsuanxiangan</Path>
<Tip>ATP</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>肾上腺素</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__SM_ShenShangXian</Path>
<Tip>肾上腺素</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>红霉素眼膏</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/SM_hongmeisuyangao</Path>
<Tip>红霉素眼膏</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>碘伏喷壶</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__polySurface119</Path>
<Tip>碘伏喷壶</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>75%酒精</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__polySurface117</Path>
<Tip>75%酒精</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>5%葡萄糖注射液50ml</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__pCylinder3</Path>
<Tip>5%葡萄糖注射液50ml</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>0.9%氯化钠注射液100ml</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_YaoPinLei/pasted__lhn1</Path>
<Tip>0.9%氯化钠注射液100ml</Tip>
<MeshCollider/>
<Icon>药品/美洛昔康.png</Icon>
</Device>
<Device>
<Name>电动剃毛刀</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__dtz1</Path>
<Tip>电动剃毛刀</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>医用外科罩</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/yiyongkouzhao</Path>
<Tip>医用外科罩</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>无菌敷料</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_WuJingFuLiao</Path>
<Tip>无菌敷料</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>纱布绷带</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_BengDai_pPlane6</Path>
<Tip>纱布绷带</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>24G静脉留置针</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/liuzhizhen/pasted__pasted__polySurface560</Path>
<Tip>24G静脉留置针</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>一次性注射器</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/SM_ShuYeQi</Path>
<Tip>一次性注射器</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>纸胶带</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_ZhiJiaoDai_polySurface125</Path>
<Tip>纸胶带</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>弹性粘性绷带</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__pPlane6</Path>
<Tip>弹性粘性绷带</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>大胶带</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__polySurface125</Path>
<Tip>大胶带</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>刷手毛刷</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__pCube35</Path>
<Tip>刷手毛刷</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>宠物电子体温计</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_DianZiTiWenJiShape</Path>
<Tip>宠物电子体温计</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>一次性注射器1</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/zhusheqi</Path>
<Tip>一次性注射器</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>肝素帽</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__pCylinder7</Path>
<Tip>肝素帽</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>创巾</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_ChuangJin</Path>
<Tip>创巾</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>保定保温毛巾</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/Object003__0</Path>
<Tip>保定保温毛巾</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>带针PGA缝线</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/zhenxian/平面</Path>
<Tip>带针PGA缝线</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>听诊器</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/SM_TingZhenQi/Archmodels70_054_01</Path>
<Tip>听诊器</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>一次性手术帽</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/SM_YiYongMao</Path>
<Tip>一次性手术帽</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>一次性手术衣</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/shoufuyi</Path>
<Tip>一次性手术衣</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>一次性外科灭菌手套</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/SM_YiYongMao.001</Path>
<Tip>一次性外科灭菌手套</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>无菌擦手纸</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_YiYongCaShouZhi</Path>
<Tip>无菌擦手纸</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>无菌纱布</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_ShouShuGongJu_SM_WuJunShaBu_SM_WuJunShaBu</Path>
<Tip>无菌纱布</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>酒精棉球</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_JiuJingMianQiu_polySurface123</Path>
<Tip>酒精棉球</Tip>
<MeshCollider/>
<Icon>耗材/骨蜡.png</Icon>
</Device>
<Device>
<Name>碘伏棉球</Name>
<HighLight color="255,255,255"/>
<Path>SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_DianFuMianQiu_polySurface123</Path>
<Tip>碘伏棉球</Tip>
<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>
<FSM name="状态机1">
<State name="初始状态">
<Enter>
<Action type="Parallel">
<!--房间墙壁 暂时隐藏-->
<Action type="Show" value="SM_QvanChangJing/sence/pPlane1" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/zuzhiqian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/changqian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/wuchihaimianqian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/pasted__SM_LaGou" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/pasted__SM_ShenXingPan" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/pasted__polySurface114" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/chuangjinqian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/zhizhixueqian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/wanzhixueqian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/chizhenqian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/dunjian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/jianjian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/pasted__pPlane4" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/pasted__SM_ShouShuDaoBing" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_JianZiLei/pasted__SM_DaoPian23" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/SM_sumianxin" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_TouBao" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_VC" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_ATuoPin" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_SanLinsuanxiangan" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_ShenShangXian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/SM_hongmeisuyangao" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__polySurface119" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__polySurface117" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__pCylinder3" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/SM_sumianxin" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_TouBao" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_VC" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_ATuoPin" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_SanLinsuanxiangan" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_ShenShangXian" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/SM_hongmeisuyangao" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__polySurface119" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__polySurface117" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__pCylinder3" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__lhn1" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__dtz1" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/yiyongkouzhao" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_WuJingFuLiao" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_BengDai_pPlane6" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/liuzhizhen/pasted__pasted__polySurface560" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/SM_ShuYeQi" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_ZhiJiaoDai_polySurface125" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__pPlane6" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__polySurface125" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__pCube35" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_DianZiTiWenJiShape" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/zhusheqi" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__pCylinder7" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_ChuangJin" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/Object003__0" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/zhenxian/平面" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/SM_TingZhenQi/Archmodels70_054_01" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/SM_YiYongMao" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/shoufuyi" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/SM_YiYongMao.001" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_YiYongCaShouZhi" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_ShouShuGongJu_SM_WuJunShaBu_SM_WuJunShaBu" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_JiuJingMianQiu_polySurface123" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_BuLiaoLei/pasted__SM_DianFuMianQiu_polySurface123" isShow="false"></Action>
<Action type="Sequence">
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/SM_liusuanatuopin" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/SM_shenshangxianjisu" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_SuMianXin" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__SM_ShuTai" isShow="false"></Action>
<Action type="Show" value="SM_QvanChangJing/SM_YaoPinLei/pasted__xsy1" isShow="false"></Action>
<Action type="UIShow" value="UIOperationList"></Action>
<Action type="NextOperation"></Action>
</Action>
</Action>
</Enter>
</State>
<!--<Transision from="初始状态" to="状态2">
<Condition type="ObjClick" value="Cube (1)"></Condition>
</Transision>-->
</FSM>
<Operation moduleType="Exam">
<Step name="术前准备">
<Step name="器械准备">
<Reset>
<Action type="Log" value="1-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Video" value="test.mp4" size="700,700" offset="100,100" finishedEvent="finished" closeEvent="close"/>
<Condition type="StrEvent" value="close"></Condition>
<Action type="Log" value="aaaa"></Action>
<Action type="Btns" value="下一步,上一步,确定,取消"></Action>
<Action type="CameraSwitch" nearPos="-3.543,3.007,-1.463" nearRot="27.9597,270,2.899792E-06" normalPos="-3.206,3.24,-1.425" normalRot="27.9597,270,2.899792E-06" isNear="false"></Action>
<Action type="HighLight" value="Cube" isHigh="true" color="0,255,0,255"></Action>
<Action type="Delay" value="5"></Action>
<Action type="HighLight" value="Cube" isHigh="false" color="0,255,0,255"></Action>
<Action type="SetScore" name="术前准备器械准备" value="6.5"></Action>
<Action type="Hint" value="请在右侧物品栏中,点选当前实训所需的器械" time="-1" icon="true" audio="Q001.mp3"></Action>
<Action type="UITools" devices="创巾钳,直止血钳,弯止血钳,组织钳,尖剪,钝剪,持针钳,无齿镊,手术刀柄3号,刀片23号,肠钳,肾形盘,器械盒,S拉钩,铁锤,撬骨板,咬骨钳,骨刀,手术刀柄4号,手术刀片16号" answers="创巾钳,直止血钳,弯止血钳,组织钳,尖剪,钝剪,持针钳,无齿镊,手术刀柄3号,刀片23号,肠钳,肾形盘,器械盒,S拉钩"
setActive="true"
rightLabel="提示:器械选择正确。"
wrongLabel="提示:器械选择错误,\r\n当前模块中不需要该物品。"
rightEvent="器械选择通过"
wrongEvent=""
rightScore=""
wrongScore="-0.5"
scoreStepName="术前准备器械准备"
/>
<Condition type="StrEvent" value="器械选择通过"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
</Step>
<Step name="药品准备">
<Reset>
<Action type="Log" value="1-2步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="SetScore" name="术前准备药品准备" value="5.5"></Action>
<Action type="CameraSwitch" 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" farTime="1" isNear="false"></Action>
<Action type="Hint" value="请在右侧物品栏中,点选当前实训所需的药品" time="-1" icon="true" audio="q001.mp3"></Action>
<Action type="UITools"
devices="速眠新,头孢噻呋,VC,硫酸阿托品,ATP,肾上腺素,红霉素眼膏,碘伏喷壶,75%酒精,5%葡萄糖注射液50ml,0.9%氯化钠注射液100ml,Vetwish软骨素,美洛昔康"
answers="速眠新,头孢噻呋,VC,硫酸阿托品,ATP,肾上腺素,红霉素眼膏,碘伏喷壶,75%酒精,5%葡萄糖注射液50ml,0.9%氯化钠注射液100ml"
setActive="true"
rightLabel="提示:药品选择正确。"
wrongLabel="提示:药品选择错误,\r\n当前模块中不需要该物品。"
rightEvent="药品选择通过"
wrongEvent=""
rightScore=""
wrongScore="-0.5"
scoreStepName="术前准备药品准备"
/>
<Condition type="StrEvent" value="药品选择通过"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
</Step>
<Step name="耗材准备">
<Reset>
<Action type="Log" value="1-2步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="SetScore" name="术前准备耗材准备" value="15.5"></Action>
<Action type="Move" value="FlyCamera" to="-5.532,3.438,-4" time="0"></Action>
<Action type="Rotate" value="FlyCamera" to="28.81702,180,0" time="0"></Action>
<Action type="Hint" value="请在右侧物品栏中,点选当前实训所需的耗材" time="-1" icon="true" audio="q001.mp3"></Action>
<Action type="UITools"
devices="电动剃毛刀,医用外科罩,无菌敷料,纱布绷带,24G静脉留置针,一次性注射器,纸胶带,弹性粘性绷带,大胶带,刷手毛刷,宠物电子体温计,一次性注射器1,肝素帽,创巾,保定保温毛巾,带针PGA缝线,听诊器,一次性手术帽,一次性手术衣,一次性外科灭菌手套,无菌擦手纸,无菌纱布,酒精棉球,碘伏棉球,T管,冲洗管,钢丝,骨钉,骨蜡"
answers="电动剃毛刀,医用外科罩,无菌敷料,纱布绷带,24G静脉留置针,一次性注射器,纸胶带,弹性粘性绷带,大胶带,刷手毛刷,宠物电子体温计,一次性注射器1,肝素帽,创巾,保定保温毛巾,带针PGA缝线,听诊器,一次性手术帽,一次性手术衣,一次性外科灭菌手套,无菌擦手纸,无菌纱布,酒精棉球,碘伏棉球"
setActive="true"
rightLabel="提示:耗材选择正确。"
wrongLabel="提示:耗材选择错误,\r\n当前模块中不需要该物品。"
rightEvent="耗材选择通过"
wrongEvent=""
rightScore=""
wrongScore="-0.5"
scoreStepName="术前准备耗材准备"
/>
<Condition type="StrEvent" value="耗材选择通过"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
</Step>
<Step name="主刀人员准备">
<Reset>
<Action type="Log" value="1-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="UIShow" value="UITools" isShow="false"></Action>
<Action type="Move" value="FlyCamera" to="-3.206,3.24,-1.425" time="0"></Action>
<Action type="Rotate" value="FlyCamera" 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>
</Step>
</Step>
</Operation>
<Operation moduleType="Study">
<Step name="术前准备">
<Step name="器械准备">
<Reset>
<Action type="Log" value="1-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="LockCamera" value="true" />
<Action type="TextTip" value="这里是文字描述\n11111\n22222\n333333" audio="q001.mp3" btns="确定,取消"/>
<Action type="Move" value="FlyCamera" to="-3.206,3.24,-1.425" time="0"></Action>
<Action type="Rotate" value="FlyCamera" 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>
</Step>
<Step name="药品准备">
<Reset>
<Action type="Log" value="1-2步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Move" value="FlyCamera" to="-3.942,3.24,-4.319" time="0"></Action>
<Action type="Rotate" value="FlyCamera" to="16.42331,180,0" time="0"></Action>
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
</Step>
<Step name="耗材准备">
<Reset>
<Action type="Log" value="1-2步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Move" value="FlyCamera" to="-5.532,3.438,-4" time="0"></Action>
<Action type="Rotate" value="FlyCamera" to="28.81702,180,0" time="0"></Action>
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
</Step>
<Step name="主刀人员准备">
<Reset>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Move" value="FlyCamera" to="-3.102,1.519,0.357" time="0"></Action>
<Action type="Rotate" value="FlyCamera" to="0,90,0" 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="Log" value="2-1步完成"></Action>
</Finished>
</Step>
<Step name="第一助手准备">
<Reset>
<Action type="Log" value="2-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
<Finished>
<Action type="Log" value="2-1步完成"></Action>
</Finished>
</Step>
<Step name="第二助手准备">
<Reset>
<Action type="Log" value="2-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
<Finished>
<Action type="Log" value="2-1步完成"></Action>
</Finished>
</Step>
<Step name="麻醉监护人员准备">
<Reset>
<Action type="Log" value="2-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
<Finished>
<Action type="Log" value="2-1步完成"></Action>
</Finished>
</Step>
<Step name="手术动物准备">
<Reset>
<Action type="Log" value="2-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
<Finished>
<Action type="Log" value="2-1步完成"></Action>
</Finished>
</Step>
<Step name="术部剃毛准备">
<Reset>
<Action type="Log" value="2-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
<Finished>
<Action type="Log" value="2-1步完成"></Action>
</Finished>
</Step>
<Step name="术部备皮准备">
<Reset>
<Action type="Log" value="2-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
<Finished>
<Action type="Log" value="2-1步完成"></Action>
</Finished>
</Step>
<Step name="术部消毒准备">
<Reset>
<Action type="Log" value="2-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
<Finished>
<Action type="Log" value="2-1步完成"></Action>
</Finished>
</Step>
<Step name="手术室准备">
<Reset>
<Action type="Log" value="2-1步重置"></Action>
</Reset>
<Start>
<Action type="Sequence">
<Action type="Btns" value="下一步"></Action>
<Condition type="UIClick" value="UIRoot/Common/UIBtns/BtnContent/下一步"></Condition>
<Action type="NextOperation"></Action>
</Action>
</Start>
<Finished>
<Action type="Log" value="2-1步完成"></Action>
</Finished>
</Step>
</Step>
</Operation>
</Module>

View File

@ -32,7 +32,7 @@
<!--物体点位选择 物体的中心点-->
<Action type="PointQuestion" value="路径1,路径2"></Action>
<!--文字选择题-->
<Action type="TextQuestion" title="这里是标题" options="A.111|B.222|C.333|D.4444" answers="2" btns="确定,取消" wait="1" showAnswer="true"></Action>
<Action type="TextQuestion" title="这里是标题" options="A.111|B.222|C.333|D.4444" answers="2" btns="确定" wait="1" showAnswer="true"></Action>
<!--提示 time为显示的时间 -1则一直显示 icon是前面的绿色图标是否显示 audio是音频 位于data文件夹下的Audio-->
<Action type="Hint" value="这里是文字描述" time="5" icon="false" audio="音频.mp3"></Action>
<!--设置变量 value只能是数字可以是小数-->
@ -55,7 +55,14 @@
<Action type="HighLight" 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>