protected void UIForStoryInfoDetailsExpression(StoryInfoDetailsBean itemData) { EditorUI.GUIText("指定NPC展现表情 ", 150, 20); EditorUI.GUIText("NPC编号:", 120, 20); itemData.num = int.Parse(EditorUI.GUIEditorText(itemData.num + "", 200, 20)); itemData.expression = (int)EditorUI.GUIEnum <CharacterExpressionEnum>("表情编号:", itemData.expression, 300, 20); }
protected void UIForStoryInfoDetailsPropPosition(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } if (EditorUI.GUIButton("更新显示", 100, 20)) { RemoveSceneObjByName("prop_" + itemData.num); RefreshSceneData(listOrderStoryInfoDetails); } if (EditorUI.GUIButton("获取显示坐标", 120, 20)) { GameObject objItem = GetSceneObjByName("prop_" + itemData.num); itemData.position_x = objItem.transform.localPosition.x; itemData.position_y = objItem.transform.localPosition.y; } EditorUI.GUIText("道具名称:", 50, 20); itemData.key_name = EditorUI.GUIEditorText(itemData.key_name, 100, 20); EditorUI.GUIText("道具序号:", 100, 20); itemData.num = EditorUI.GUIEditorText(itemData.num, 50, 20); EditorUI.GUIText("道具站位 ", 100, 20); EditorUI.GUIText("道具位置X:", 120, 20); itemData.position_x = EditorUI.GUIEditorText(itemData.position_x, 100, 20); EditorUI.GUIText("道具位置Y:", 120, 20); itemData.position_y = EditorUI.GUIEditorText(itemData.position_y, 100, 20); EditorUI.GUIText("道具朝向1左2右:", 120, 20); itemData.face = EditorUI.GUIEditorText(itemData.face, 50, 20); }
protected void UIForStoryInfoDetailsNpcDestory(StoryInfoDetailsBean itemData) { EditorUI.GUIText("删除角色(num,num):", 120, 20); itemData.npc_destroy = EditorUI.GUIEditorText(itemData.npc_destroy, 200, 20); EditorUI.GUIText("延迟删除时间s:", 120, 20); itemData.wait_time = EditorUI.GUIEditorText(itemData.wait_time); }
/// <summary> /// 生成道具 /// </summary> /// <param name="itemData"></param> public void CreateProp(StoryInfoDetailsBean itemData) { GameObject objPropModel = StoryInfoHandler.Instance.manager.GetStoryPropModelByName(itemData.key_name); GameObject objProp = Instantiate(transform.gameObject, objPropModel); listPropObj.Add(objProp); 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; //如果有移动控件 CharacterMoveCpt characterMove = objProp.GetComponent <CharacterMoveCpt>(); if (characterMove != null) { characterMove.SetMoveSpeed(1); } }
public void HandleForCameraFollowCharacter(StoryInfoDetailsBean itemData) { //设置摄像头位置 GameObject objNpc = GetNpcByNpcNum(itemData.num); BaseControl baseControl = GameControlHandler.Instance.manager.GetControl <ControlForStoryCpt>(GameControlHandler.ControlEnum.Story); baseControl.SetCameraFollowObj(objNpc); }
public void HandleForEffect(StoryInfoDetailsBean itemData) { Vector3 effectPosition = new Vector3(itemData.position_x, itemData.position_y); string effectName = itemData.key_name; float effectTime = itemData.wait_time; EffectHandler.Instance.PlayEffect(effectName, effectPosition, effectTime); }
public bool HandleForTalk(StoryInfoDetailsBean itemData) { //进入对话; UIGameText uiComponent = UIHandler.Instance.manager.OpenUIAndCloseOther <UIGameText>(UIEnum.GameText); uiComponent.SetData(TextEnum.Story, itemData.text_mark_id); return(false); }
public void HandleForCameraPosition(StoryInfoDetailsBean itemData) { //设置摄像头位置 BaseControl baseControl = GameControlHandler.Instance.manager.GetControl <ControlForStoryCpt>(GameControlHandler.ControlEnum.Story); Vector3 cameraWorldPosition = transform.TransformPoint(new Vector3(itemData.position_x, itemData.position_y)); baseControl.SetCameraFollowObj(null); baseControl.SetFollowPosition(cameraWorldPosition); }
protected void UIForStoryInfoDetailsAudioSound(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } itemData.audio_sound = (int)EditorUI.GUIEnum <AudioSoundEnum>("音效类型:", itemData.audio_sound, 300, 20); }
protected void UIForStoryInfoDetailsAudioMusic(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } itemData.audio_music = (int)EditorUI.GUIEnum <AudioMusicEnum>("音乐类型:", itemData.audio_music, 300, 20); }
protected void UIForStoryInfoDetailsCameraFollowCharacter(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } EditorUI.GUIText("摄像头跟随角色序号 ", 200, 20); itemData.num = EditorUI.GUIEditorText(itemData.num, 100, 20); }
/// <summary> /// 展示指定顺序的故事详情 /// </summary> public void GUIStoryInfoDetailsList() { for (int i = 0; i < listOrderStoryInfoDetails.Count; i++) { StoryInfoDetailsBean itemData = listOrderStoryInfoDetails[i]; UIForStoryInfoDetails(itemData); } GUILayout.Space(50); UIForStoryInfoDetailsButton(); }
protected void UIForStoryInfoDetailsAutoNext(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } EditorUI.GUIText("延迟执行 ", 100, 20); EditorUI.GUIText("延迟时间s:", 120, 20); itemData.wait_time = float.Parse(EditorUI.GUIEditorText(itemData.wait_time + "", 100, 20)); }
protected void UIForStoryInfoDetailsSceneInt(StoryInfoDetailsBean itemData) { EditorUI.GUIText("场景互动 ", 120, 20); EditorUI.GUIText("互动物体名称:", 120, 20); itemData.scene_intobj_name = EditorUI.GUIEditorText(itemData.scene_intobj_name, 200, 20); EditorUI.GUIText("互动类型名称:", 120, 20); itemData.scene_intcomponent_name = EditorUI.GUIEditorText(itemData.scene_intcomponent_name, 200, 20); EditorUI.GUIText("互动方法:", 120, 20); itemData.scene_intcomponent_method = EditorUI.GUIEditorText(itemData.scene_intcomponent_method, 200, 20); EditorUI.GUIText("互动方法参数:", 120, 20); itemData.scene_intcomponent_parameters = EditorUI.GUIEditorText(itemData.scene_intcomponent_parameters, 200, 20); }
protected void UIForStoryInfoDetailsNpcEquip(StoryInfoDetailsBean itemData) { EditorUI.GUIText("指定NPC穿着(可以用,分割 前为男后为女):", 300, 20); EditorUI.GUIText("NPC num:", 120, 20); itemData.num = EditorUI.GUIEditorText(itemData.num); EditorUI.GUIText("头ID(-1默认 0不穿):", 150, 20); itemData.npc_hat = EditorUI.GUIEditorText(itemData.npc_hat); EditorUI.GUIText("衣ID(-1默认 0不穿):", 150, 20); itemData.npc_clothes = EditorUI.GUIEditorText(itemData.npc_clothes); EditorUI.GUIText("鞋ID(-1默认 0不穿):", 150, 20); itemData.npc_shoes = EditorUI.GUIEditorText(itemData.npc_shoes); }
public void HandleForNpcDestory(StoryInfoDetailsBean itemData) { //删除角色 int[] npcNum = StringUtil.SplitBySubstringForArrayInt(itemData.npc_destroy, ','); float destroyTime = itemData.wait_time; foreach (int itemNpcNum in npcNum) { GameObject objNpc = GetNpcByNpcNum(itemNpcNum); //延迟删除 StartCoroutine(CoroutineForDelayDestoryNpc(destroyTime, objNpc)); } }
protected void UIForStoryInfoSetTime(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } EditorUI.GUIText("设置时间:", 50, 20); EditorUI.GUIText("小时:", 50, 20); itemData.time_hour = EditorUI.GUIEditorText(itemData.time_hour, 100, 20); EditorUI.GUIText("分钟", 50, 20); itemData.time_minute = EditorUI.GUIEditorText(itemData.time_minute, 100, 20); }
protected void UIForStoryInfoDetailsCameraPosition(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } EditorUI.GUIText("摄像头位置 ", 150, 20); EditorUI.GUIText("x:", 50, 20); itemData.position_x = EditorUI.GUIEditorText(itemData.position_x, 100, 20); EditorUI.GUIText("y:", 50, 20); itemData.position_y = EditorUI.GUIEditorText(itemData.position_y, 100, 20); }
public void HandleForNpcExpression(StoryInfoDetailsBean itemData) { //表情 GameObject objItem = GetNpcByNpcNum(itemData.num); if (objItem != null) { NpcAIStoryCpt npcAIStory = objItem.GetComponent <NpcAIStoryCpt>(); if (npcAIStory != null) { npcAIStory.SetExpression(itemData.expression); } } }
protected void RemoveStoryInfoDetailsItem(StoryInfoDetailsBean itemData) { listAllStoryInfoDetails.Remove(itemData); listOrderStoryInfoDetails.Remove(itemData); if (itemData.GetStoryInfoDetailsType() == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.NpcPosition) { RemoveSceneObjByName("character_" + itemData.num); } else if (itemData.GetStoryInfoDetailsType() == StoryInfoDetailsBean.StoryInfoDetailsTypeEnum.PropPosition) { RemoveSceneObjByName("prop_" + itemData.num); } return; }
public void HandleForSceneInt(StoryInfoDetailsBean itemData) { try { //场景物体互动 GameObject objFind = GameObject.Find(itemData.scene_intobj_name); //参数 List <string> listparameter = StringUtil.SplitBySubstringForListStr(itemData.scene_intcomponent_parameters, ','); //通过反射调取方法 ReflexUtil.GetInvokeMethod(objFind, itemData.scene_intcomponent_name, itemData.scene_intcomponent_method, listparameter); } catch { } }
protected void UIForStoryInfoDetailsEffect(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } EditorUI.GUIText("粒子名称:", 50, 20); itemData.key_name = EditorUI.GUIEditorText(itemData.key_name, 100, 20); EditorUI.GUIText("粒子位置X:", 120, 20); itemData.position_x = EditorUI.GUIEditorText(itemData.position_x, 100, 20); EditorUI.GUIText("粒子位置Y:", 120, 20); itemData.position_y = EditorUI.GUIEditorText(itemData.position_y, 100, 20); EditorUI.GUIText("持续时间(-1为永久):", 120, 20); itemData.wait_time = EditorUI.GUIEditorText(itemData.wait_time, 100, 20); }
protected void UIForStoryInfoDetailsNpcPosition(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("更新显示", 100, 20)) { RemoveSceneObjByName("character_" + itemData.num); RefreshSceneData(listOrderStoryInfoDetails); } if (EditorUI.GUIButton("获取显示坐标", 120, 20)) { GameObject objItem = GetSceneObjByName("character_" + itemData.num); itemData.position_x = objItem.transform.localPosition.x; itemData.position_y = objItem.transform.localPosition.y; } if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } NpcInfoBean npcInfo; if (itemData.npc_id == 0) { npcInfo = new NpcInfoBean(); npcInfo.name = "玩家"; } else if (itemData.npc_id == -1) { npcInfo = new NpcInfoBean(); npcInfo.name = "妻子"; } else { npcInfo = mapNpcInfo[itemData.npc_id]; } EditorUI.GUIText("NPCId(0:自己,-1:妻子):", 200, 20); itemData.npc_id = EditorUI.GUIEditorText(itemData.npc_id, 100, 20); EditorUI.GUIText("姓名:" + npcInfo.title_name + "-" + npcInfo.name, 200, 20); EditorUI.GUIText("NPC序号:", 100, 20); itemData.num = int.Parse(EditorUI.GUIEditorText(itemData.num + "", 50, 20)); EditorUI.GUIText("NPC站位 ", 100, 20); EditorUI.GUIText("NPC位置X:", 120, 20); itemData.position_x = float.Parse(EditorUI.GUIEditorText(itemData.position_x + "", 100, 20)); EditorUI.GUIText("NPC位置Y:", 120, 20); itemData.position_y = float.Parse(EditorUI.GUIEditorText(itemData.position_y + "", 100, 20)); EditorUI.GUIText("NPC朝向1左2右:", 120, 20); itemData.face = int.Parse(EditorUI.GUIEditorText(itemData.face + "", 50, 20)); }
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); }
public void HandleForNpcPosition(StoryInfoDetailsBean itemData) { //Npc站位 GameObject objNpc = GetNpcByNpcNum(itemData.num); BaseNpcAI npcAI; if (objNpc == null) { npcAI = CreateNpc(itemData); objNpc = npcAI.gameObject; } else { npcAI = objNpc.GetComponent <BaseNpcAI>(); npcAI.characterMoveCpt.SetDestinationLocal(transform, new Vector3(itemData.position_x, itemData.position_y)); } npcAI.SetCharacterFace(itemData.face); }
/// <summary> /// 生成所有员工 /// </summary> /// <param name="itemData"></param> public void CreateAllWorker(StoryInfoDetailsBean itemData) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); List <CharacterBean> listCharacterData = gameData.listWorkerCharacter; if (CheckUtil.ListIsNull(listCharacterData)) { return; } if (itemData.horizontal == 0) { itemData.horizontal = 1; } int horizontalNumber = listCharacterData.Count / itemData.horizontal; int tempHorizontalNumber = 0; for (int i = 0; i < listCharacterData.Count; i++) { CharacterBean characterData = listCharacterData[i]; GameObject objNpcModel = StoryInfoHandler.Instance.manager.objNpcModel; GameObject objNpc = Instantiate(transform.gameObject, objNpcModel); int tempHorizontal = i / horizontalNumber; if (tempHorizontalNumber >= horizontalNumber) { tempHorizontalNumber = 0; } float positionX = itemData.position_x + tempHorizontalNumber * itemData.offset_x; float positionY = itemData.position_y + tempHorizontal * itemData.offset_y; tempHorizontalNumber++; objNpc.transform.localPosition = new Vector3(positionX, positionY); NpcAIStoryCpt aiNpc = objNpc.GetComponent <NpcAIStoryCpt>(); //设置编号 objNpc.name = "character_" + (i + 1001); aiNpc.SetCharacterData(characterData); aiNpc.SetCharacterFace(itemData.face); listNpcObj.Add(objNpc); } }
protected void UIForStoryInfoDetailsWorkerPosition(StoryInfoDetailsBean itemData) { if (EditorUI.GUIButton("删除")) { RemoveStoryInfoDetailsItem(itemData); return; } EditorUI.GUIText("员工站位", 100, 20); EditorUI.GUIText("员工站位X:", 120, 20); itemData.position_x = EditorUI.GUIEditorText(itemData.position_x, 100, 20); EditorUI.GUIText("员工站位Y:", 120, 20); itemData.position_y = EditorUI.GUIEditorText(itemData.position_y, 100, 20); EditorUI.GUIText("员工朝向1左2右:", 120, 20); itemData.face = EditorUI.GUIEditorText(itemData.face, 50, 20); EditorUI.GUIText("员工间隔(x y):", 120, 20); itemData.offset_x = EditorUI.GUIEditorText(itemData.offset_x, 50, 20); itemData.offset_y = EditorUI.GUIEditorText(itemData.offset_y, 50, 20); EditorUI.GUIText("员工横竖排数(h v):", 120, 20); itemData.horizontal = EditorUI.GUIEditorText(itemData.horizontal, 50, 20); itemData.vertical = EditorUI.GUIEditorText(itemData.vertical, 50, 20); }
/// <summary> /// 生成NPC /// </summary> /// <param name="itemData"></param> public BaseNpcAI CreateNpc(StoryInfoDetailsBean itemData) { GameObject objNpcModel = StoryInfoHandler.Instance.manager.objNpcModel; GameObject objNpc = Instantiate(transform.gameObject, objNpcModel); objNpc.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y); listNpcObj.Add(objNpc); NpcAIStoryCpt aiNpc = objNpc.GetComponent <NpcAIStoryCpt>(); CharacterBean characterData; if (itemData.npc_id == 0) { //使用自己的数据 GameControlHandler.Instance.manager.GetControl <ControlForStoryCpt>(GameControlHandler.ControlEnum.Story).SetCameraFollowObj(objNpc); GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); characterData = gameData.userCharacter; } else if (itemData.npc_id == -1) { // 使用妻子的数据 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); FamilyDataBean familyData = gameData.GetFamilyData(); characterData = familyData.mateCharacter as CharacterBean; } else { characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(itemData.npc_id); } //设置编号 objNpc.name = "character_" + itemData.num; CharacterBean copyCharacterData = ClassUtil.DeepCopyByBin <CharacterBean>(characterData); aiNpc.SetCharacterData(copyCharacterData); //默认设置NPC速度为1 aiNpc.characterMoveCpt.SetMoveSpeed(1); return(aiNpc); }
public void HandleForNpcEquip(StoryInfoDetailsBean itemData) { //装备 GameObject objItem = GetNpcByNpcNum(itemData.num); if (objItem != null) { NpcAIStoryCpt npcAIStory = objItem.GetComponent <NpcAIStoryCpt>(); itemData.GetNpcEquip(npcAIStory.characterData.body.GetSex(), out long hatId, out long clothesId, out long shoesId); if (hatId != -1) { npcAIStory.characterData.equips.hatTFId = hatId; } if (clothesId != -1) { npcAIStory.characterData.equips.clothesTFId = clothesId; } if (shoesId != -1) { npcAIStory.characterData.equips.shoesTFId = shoesId; } npcAIStory.SetCharacterData(npcAIStory.characterData); } }
public void HandleForPropPosition(StoryInfoDetailsBean itemData) { //道具位置 GameObject objProp = GetPropByNpcNum(itemData.num); if (objProp == null) { CreateProp(itemData); } else { CharacterMoveCpt characterMove = objProp.GetComponent <CharacterMoveCpt>(); //如果可以移动 if (characterMove) { characterMove.SetDestinationLocal(transform, new Vector3(itemData.position_x, itemData.position_y)); } //如果不能移动则直接设置坐标 else { objProp.transform.localPosition = new Vector3(itemData.position_x, itemData.position_y); } } }