//剧情脚本模板加载回调 private void ScriptTemplateLoaded(TextAsset textObj) { if (null == textObj) { return; } string triggerName = "triggerTable>0>trigger"; XMLNode rootNode = XMLParser.Parse(textObj.ToString()); foreach (XMLNode triggerNode in rootNode.GetNodeList(triggerName)) { string scriptName = triggerNode.GetValue("@scriptName"); string type = triggerNode.GetValue("@type"); ScriptBaseEntry baseEntry = StoryFactory.GetEntry(type); if (null != baseEntry) { baseEntry.ScriptName = scriptName; baseEntry.ParseNode(triggerNode); scriptEntryList.Add(baseEntry); } } }
public bool StoryExits(ScriptBaseEntry baseEntry) { foreach (ScriptBaseEntry entry in scriptEntryList) { if (entry.Equals(baseEntry)) { return(true); } } return(false); }
public override bool Equals(object other) { ScriptBaseEntry otherBaseEntry = other as ScriptBaseEntry; if (null != otherBaseEntry) { return(LevelMatch()); } else { return(false); } }
//获得脚本Action数据 public void LoadActionData(ScriptBaseEntry baseEntry, LoadActionData loadDataCallback) { //如果正在加载剧情数据,则不能播放下一个剧情 if (loadingData) { if (null != loadDataCallback) { loadDataCallback(); } return; } loadingData = true; curScriptEntry = null; foreach (ScriptBaseEntry entry in scriptEntryList) { if (entry.Equals(baseEntry)) { curScriptEntry = entry; actionList.Clear(); //加载Action数据 this.loadActionDataCallback = loadDataCallback; string scriptUrl = UrlUtils.GetStoryScriptUrl(entry.ScriptName); AssetManager.Instance.LoadAsset <TextAsset>(scriptUrl, ScriptLoaded); break; } } //处理脚本不存在情况 if (null == curScriptEntry) { loadingData = false; if (null != loadDataCallback) { loadDataCallback(); } } }