//触发剧情对话框具体实现 private void TriggerStoryDlgImpl() { if (m_StoryId < 1 || m_StoryId > StoryDlgManager.Instance.StoryInfos.Count) { return; } //剧情对话框只触发一次 if (IsTriggered == true) { return; } IsTriggered = true; string storyDlgName = "StoryDlgSmall"; if (m_StoryDlgType == StoryDlgType.Big) { storyDlgName = "StoryDlgBig"; } GameObject parentGO = GameObject.FindGameObjectWithTag("UI"); if (parentGO != null) { Transform parentTransform = parentGO.transform; Transform t = parentTransform.Find(storyDlgName); if (t == null) { //第一次加载 GameObject go = DashFire.ResourceSystem.GetSharedResource(string.Format("UI/{0}", storyDlgName)) as GameObject; if (go != null) { GameObject dlgGO = NGUITools.AddChild(parentTransform.gameObject, go); dlgGO.name = storyDlgName; StoryDlgArgs arg = new StoryDlgArgs(); arg.m_StoryId = m_StoryId; arg.m_StoryDlgType = m_StoryDlgType; arg.m_IntervalTime = m_IntervalTime; dlgGO.BroadcastMessage("OnTriggerStory", arg); } } else if (NGUITools.GetActive(t.gameObject) == false) { NGUITools.SetActive(t.gameObject, true); StoryDlgArgs arg = new StoryDlgArgs(); arg.m_StoryId = m_StoryId; arg.m_StoryDlgType = m_StoryDlgType; arg.m_IntervalTime = m_IntervalTime; t.gameObject.BroadcastMessage("OnTriggerStory", arg); } } }
public void OnTriggerStory(StoryDlgArgs arg) { if (m_IsStoryDlgActive == false) { m_StoryInfo = StoryDlgManager.Instance.GetStoryInfoByID(arg.m_StoryId); if (m_StoryInfo != null) { //Debug.LogError("===== Trigger A New Story !!! " + arg.m_IntervalTime); m_StoryId = arg.m_StoryId; m_StoryDlgType = arg.m_StoryDlgType; m_IntervalTime = arg.m_IntervalTime; m_IsStoryDlgActive = true; m_StoryDlgGO = this.gameObject; m_Count = 0; //剧情对话计数器,触发一个新的剧情时重置为0 m_StepNumber = m_StoryInfo.StoryItems.Count; StoryDlgItem item = m_StoryInfo.StoryItems[m_Count]; UpdateStoryDlg(m_StoryDlgGO.transform, item); NGUITools.SetActive(m_StoryDlgGO, true); if (m_StoryDlgType == StoryDlgType.Big) { TouchManager.TouchEnable = false; JoyStickInputProvider.JoyStickEnable = false; GameObject dfmUIRootGO = this.transform.parent.gameObject; if (dfmUIRootGO != null) { dfmUIRootGO.GetComponent <DFMUiRoot>().SetUIVisible(false); } } m_Count++; if (m_IntervalTime > 0.0f) { Invoke("NextStoryItem", m_IntervalTime); } } else { Debug.LogError("Wrong Story id = " + arg.m_StoryId); } } }