public void CreateStoryInfoDetailsDataByType(long storyId, StoryInfoDetailsBean.StoryInfoDetailsTypeEnum type) { StoryInfoDetailsBean itemDetailsInfo = new StoryInfoDetailsBean(); itemDetailsInfo.type = (int)type; switch (type) { case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcPosition: itemDetailsInfo.npc_id = 1; itemDetailsInfo.num = 1; break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcExpression: break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Talk: itemDetailsInfo.text_mark_id = storyId * 10000 + mFindStroyOrder; break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcDestory: break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.SceneInt: break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AutoNext: itemDetailsInfo.wait_time = 1; break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraPosition: break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraFollowCharacter: break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AudioSound: itemDetailsInfo.audio_sound = (int)AudioSoundEnum.ButtonForNormal; break; } itemDetailsInfo.story_id = storyId; itemDetailsInfo.story_order = mFindStroyOrder; listAllStoryInfoDetails.Add(itemDetailsInfo); listOrderStoryInfoDetails.Add(itemDetailsInfo); storyInfoService.UpdateStoryDetailsByIdAndOrder(mFindStoryId, mFindStroyOrder, listOrderStoryInfoDetails); }
/// <summary> /// 刷新场景数据 /// </summary> /// <param name="listData"></param> public void RefreshSceneData(List <StoryInfoDetailsBean> listData) { if (listData == null) { return; } if (listStoryTextInfo != null) { listStoryTextInfo.Clear(); } listStoryTextInfo = null; foreach (StoryInfoDetailsBean itemData in listData) { StoryInfoDetailsBean.StoryInfoDetailsTypeEnum storyInfoDetailsType = itemData.GetStoryInfoDetailsType(); if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcPosition) { GameObject objNpc = GetSceneObjByName("character_" + itemData.num); BaseNpcAI npcAI = null; if (objNpc != null) { npcAI = objNpc.GetComponent <BaseNpcAI>(); } if (npcAI == null) { NpcInfoBean npcInfoBean; if (itemData.npc_id == 0) { npcInfoBean = new NpcInfoBean(); } else if (itemData.npc_id == -1) { npcInfoBean = new NpcInfoBean(); } else { if (mapNpcInfo.TryGetValue(itemData.npc_id, out NpcInfoBean npcInfo)) { npcInfoBean = npcInfo; } else { npcInfoBean = new NpcInfoBean(); LogUtil.LogError("创建NPC失败 找不到ID为" + itemData.npc_id + "的NPC信息"); } } objNpc = CreateNpc(npcInfoBean.npc_id, new Vector3(itemData.position_x, itemData.position_y), itemData.num); npcAI = objNpc.GetComponent <BaseNpcAI>(); } npcAI.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y); //设置朝向 npcAI.SetCharacterFace(itemData.face); } else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcEquip) { GameObject objNpc = GetSceneObjByName("character_" + itemData.num); if (objNpc == null) { continue; } BaseNpcAI npcAI = objNpc.GetComponent <BaseNpcAI>(); if (npcAI == null) { continue; } SexEnum sex = npcAI.characterData.body.GetSex(); itemData.GetNpcEquip(sex, out long hatId, out long clothesId, out long shoesId); if (hatId != -1) { npcAI.characterData.equips.hatTFId = hatId; } if (clothesId != -1) { npcAI.characterData.equips.clothesTFId = clothesId; } if (shoesId != -1) { npcAI.characterData.equips.shoesTFId = shoesId; } npcAI.SetCharacterData(npcAI.characterData); } else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.PropPosition) { GameObject objProp = GetSceneObjByName("prop_" + itemData.num); if (objProp == null) { GameObject objModel = StoryInfoHandler.Instance.manager.GetStoryPropModelByName(itemData.key_name); objProp = Instantiate(objModel, StoryInfoHandler.Instance.builderForStory.transform); objProp.name = "prop_" + itemData.num; } //设置位置和朝向 objProp.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y); Vector3 bodyScale = objProp.transform.localScale; switch (itemData.face) { case 1: bodyScale.x = -1; break; case 2: bodyScale.x = 1; break; } objProp.transform.localScale = bodyScale; } //如果是对话 查询对话数据 else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Talk) { listStoryTextInfo = textInfoService.QueryDataByMarkId(TextEnum.Story, itemData.text_mark_id); } else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcDestory) { int[] numList = StringUtil.SplitBySubstringForArrayInt(itemData.npc_destroy, ','); foreach (int num in numList) { BaseNpcAI npcAI = CptUtil.GetCptInChildrenByName <BaseNpcAI>(StoryInfoHandler.Instance.builderForStory.gameObject, num + ""); DestroyImmediate(npcAI.gameObject); } } else if (storyInfoDetailsType == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraPosition) { Vector3 cameraWorldPosition = StoryInfoHandler.Instance.builderForStory.transform.TransformPoint(new Vector3(itemData.position_x, itemData.position_y, -10)); GameCameraHandler.Instance.manager.camera2D.Follow = null; GameCameraHandler.Instance.manager.camera2D.transform.position = cameraWorldPosition; } else if (itemData.type == (int)StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraFollowCharacter) { BaseNpcAI npcAI = CptUtil.GetCptInChildrenByName <BaseNpcAI>(StoryInfoHandler.Instance.builderForStory.gameObject, "character_" + itemData.num); GameCameraHandler.Instance.manager.camera2D.Follow = npcAI.transform; } } }
protected void UIForStoryInfoDetails(StoryInfoDetailsBean itemData) { GUILayout.BeginHorizontal(); StoryInfoDetailsBean.StoryInfoDetailsTypeEnum storyInfoDetailsType = itemData.GetStoryInfoDetailsType(); switch (storyInfoDetailsType) { case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcPosition: UIForStoryInfoDetailsNpcPosition(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcExpression: UIForStoryInfoDetailsExpression(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcDestory: UIForStoryInfoDetailsNpcDestory(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcEquip: UIForStoryInfoDetailsNpcEquip(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Talk: UIForStoryInfoDetailsTalk(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AutoNext: UIForStoryInfoDetailsAutoNext(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.PropPosition: UIForStoryInfoDetailsPropPosition(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.WorkerPosition: UIForStoryInfoDetailsWorkerPosition(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.Effect: UIForStoryInfoDetailsEffect(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.SetTime: UIForStoryInfoSetTime(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraPosition: UIForStoryInfoDetailsCameraPosition(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.CameraFollowCharacter: UIForStoryInfoDetailsCameraFollowCharacter(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AudioSound: UIForStoryInfoDetailsAudioSound(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.AudioMusic: UIForStoryInfoDetailsAudioMusic(itemData); break; case StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.SceneInt: UIForStoryInfoDetailsSceneInt(itemData); break; } GUILayout.EndHorizontal(); }