public StoryActionContainer GetStory(string labelId) { StoryActionContainer container = new StoryActionContainer(); StoryVirtualMachine.Instance.SetStoryActionContainer(container); if (m_storys == null) { Debug.LogError("Story doesn`t exist."); return(null); } if (!m_storys.RequestLabel(labelId)) { Debug.LogError($"Label {labelId} doesn`t exist"); } else { m_storys.JumpToWordAfterLabel(labelId); } if (!IsLabelRead(labelId)) { AddReadLabel(labelId); } // container.PushChangePanelType(1); // container.PushJump(new List<Option>(){new Option("1","这是一个不知道什么内容的选项"),new Option("2","这是一个不知道什么内容的选项")}); // container.PushFrontImg("MG_TalkType1_TalkBGVignetee"); while (!m_storys.IsDone()) { switch (m_storys.GetNodeType()) { case StoryReader.NodeType.word: container.PushName(m_storys.GetName()); StoryVirtualMachine.Instance.Run(m_storys.GetContent()); m_storys.NextStory(); break; case StoryReader.NodeType.jump: container.PushJump(m_storys.GetJump()); // m_storys.NextStory (); //Test return(container); break; case StoryReader.NodeType.label: //m_storys.NextStory (); m_storys.NextStory(); break; case StoryReader.NodeType.end: m_storys.NextStory(); return(container); break; case StoryReader.NodeType.exhibit: container.PushShowEvidence(m_storys.GetExhibit(), m_storys.GetExhibitPrefix()); m_storys.NextStory(); //return container; break; case StoryReader.NodeType.raiseEvent: string eventName = m_storys.GetEventName(); switch (m_storys.GetEventType()) { case StoryReader.EventType.loadScene: container.PushLoadGameScene(eventName); break; case StoryReader.EventType.loadMission: { MissionEnum needLoadMission = MissionSceneManager.Instance.GetMissionEnumBy(eventName, false); if (needLoadMission == MissionEnum.None) { Debug.LogError(eventName + " is not exist."); } container.LoadMission(needLoadMission); //m_storys.NextStory(); //return container; } break; case StoryReader.EventType.LoadCgScene: container.LoadCGScene(eventName); break; case StoryReader.EventType.CloseCgScene: container.CloseCGScene(eventName); break; case StoryReader.EventType.LoadControversy: container.PushEnterControversy(eventName); break; case StoryReader.EventType.PlayCutIn: container.PushCutIn(eventName); break; case StoryReader.EventType.PlayInteractionAnimation: string cleanItemName = eventName; if (cleanItemName.Contains("_")) { cleanItemName = eventName.Substring(0, eventName.IndexOf('_')); } container.PlayInteractionAnimation(cleanItemName); break; case StoryReader.EventType.invokeEvent: container.TriggerEvent(new StarPlatinum.EventManager.RaiseEvent( StoryReader.EventType.invokeEvent, eventName)); break; case StoryReader.EventType.playAnimation: container.PlayAnimation(eventName); break; case StoryReader.EventType.PlayTimeline: container.PushTimeLine(eventName); break; case StoryReader.EventType.LoadFrontground: container.PushFrontImg(eventName); break; case StoryReader.EventType.LoadBackground: container.ChangeBackground(eventName); break; case StoryReader.EventType.LoadSkybox: SkyboxEnum skyboxEnum = (SkyboxEnum)Enum.Parse(typeof(SkyboxEnum), eventName); container.LoadSkybox(skyboxEnum); break; case StoryReader.EventType.SwitchTalkUIType: int UIPanelType = int.Parse(eventName); container.PushChangePanelType(UIPanelType); break; case StoryReader.EventType.RemoveSpecificExhibit: container.PushRemoveEvidence(eventName); break; case StoryReader.EventType.RemoveAllExhibit: container.RemoveAllExhibit(); break; case StoryReader.EventType.GameOver: container.PushGameEvent("GameEnd"); break; default: break; } m_storys.NextStory(); break; default: Debug.LogError("Unknown Node Type"); break; } } return(container); }