using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityCommon; using System; using GFMain; using System.Linq; namespace DTYJ { public class OptEquip : MonoBehaviour { private OptEquipItem[] optEquipItems; private void Awake() { for (int i = 0; i < transform.childCount; i++) { if (transform.GetChild(i).name.EndsWith("View")) { var tfView = transform.GetChild(i); Obj3DMouseActionTrigger.AddTrigger(tfView.gameObject, OnMouseActionView); } } var items = transform.GetComponentsInChildren(); optEquipItems = items; for (int i = 0; i < items.Length; i++) { var item = items[i]; Obj3DMouseActionTrigger.AddTrigger(item.gameObject, OnMouseActionItem); } } float timeDealt = 0; private void Update() { timeDealt += Time.deltaTime; if (timeDealt > 2) timeDealt = 0; else return; if (Camera.main != null) { for (int i = 0; i < optEquipItems.Length; i++) { if (Vector3.Distance(Camera.main.transform.position, optEquipItems[i].transform.position) < 4) { HighlighterController.Instance.HighlightOn(optEquipItems[i].gameObject); } else { HighlighterController.Instance.HighlightOff(optEquipItems[i].gameObject); } } } } readonly float maxDistance = 12; private void OnMouseActionItem(GameObject arg1, Obj3DMouseActionTrigger.ActionType arg2) { if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseExit) { var oeis = arg1.GetComponent(); var gos = oeis.GetAnimGoes(); gos.ForEach(g => HighlighterController.Instance.HighlightOff_const(g)); } else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseEnter) { if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return; var oeis = arg1.GetComponent(); var gos = oeis.GetAnimGoes(); gos.ForEach(g => HighlighterController.Instance.HighlightOn_const(g)); } if (arg2 != Obj3DMouseActionTrigger.ActionType.OnMouseUpAsButton) return; if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return; var equipitem = arg1.GetComponent(); if (equipitem != null) { var qei = equipitem.GetComponent(); if (!string.IsNullOrEmpty(qei.needTool) && UIToolPanel.instance != null) { if (qei.needTool == UIToolPanel.instance.nowSelected) { } else { MainEntry.CommonUI.messageBox.ShowMessage("需要钥匙:" + qei.needTool); return; } } if (equipitem.操作方式 != null && equipitem.操作方式.Length > 0) { Main.Instance.uiMainMenu.ShowFloatMenu(equipitem.equipName + equipitem.id, equipitem.操作方式, (v) => { qei.Exe(v); Debug.Log("执行方法:" + v); }); } else { qei.Exe(); Debug.Log("直接执行"); } } } private void OnMouseActionView(GameObject arg1, Obj3DMouseActionTrigger.ActionType arg2) { if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseExit) { var oeis = arg1.GetComponentsInChildren(); foreach (var item in oeis) { var gos = item.GetAnimGoes(); gos.ForEach(g => HighlighterController.Instance.HighlightOff(g)); } } else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseEnter) { if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return; var oeis = arg1.GetComponentsInChildren(); foreach (var item in oeis) { var gos = item.GetAnimGoes(); gos.ForEach(g => HighlighterController.Instance.HighlightOn(g)); } } else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseUpAsButton) { if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return; var state = MainEntry.CameraCtrl.ToMotionless(arg1.transform); state.onExit = () => { arg1.gameObject.GetComponent().enabled = true; }; arg1.gameObject.GetComponent().enabled = false; } } } }