public void OnPointerClick(PointerEventData p) { RectTransform rectTransform = GetComponent <RectTransform>(); minimapUIActualWdithAndHeight = new Vector2(rectTransform.sizeDelta.x * rectTransform.localScale.x, rectTransform.sizeDelta.y * rectTransform.localScale.y); minimapUIRightUpPos = new Vector2(rectTransform.position.x, rectTransform.position.y); scaleXY = new Vector2(rectTransform.position.x / (rectTransform.localPosition.x * 2), rectTransform.position.y / (rectTransform.localPosition.y * 2)); screenPosInMiniMapCamera = new Vector2(1.0f - (rectTransform.position.x - p.position.x) / (minimapUIActualWdithAndHeight.x * scaleXY.x), 1.0f - (rectTransform.position.y - p.position.y) / (minimapUIActualWdithAndHeight.y * scaleXY.y)); // Debug.Log("右上角实际位置:" + rectTransform.position); // Debug.Log("缩放值:"+scaleXY); // Debug.Log("鼠标点击位置:"+p.position); // Debug.Log("左下角实际位置:" + new Vector2(rectTransform.position.x-minimapUIActualWdithAndHeight.x*scaleXY.x, rectTransform.position.y - minimapUIActualWdithAndHeight.y * scaleXY.y)); // Debug.Log("screenPosInMiniMapCamera:" + screenPosInMiniMapCamera); ray = miniMapCamera.GetComponent <Camera>().ViewportPointToRay(new Vector3(screenPosInMiniMapCamera.x, screenPosInMiniMapCamera.y, 0.0f)); Debug.DrawLine(ray.origin, ray.origin + ray.direction * 1000); if (Physics.Raycast(ray, out hit, 1000)) { Debug.Log(hit.collider.name); ColliderTriggerButton c = hit.transform.GetComponent <ColliderTriggerButton>(); ColliderTriggerButton.touchRayCastFrom = ColliderTriggerButton.TouchRayCastFrom.Minimap; if (c != null) { c.ExeTriggerEvent(null); } } }
public void GenPoint360() { Debug.Log("GenPoint360"); for (int i = 0; i < point360Floors.Length; i++) { ColliderTriggerButton[] childTran = point360Floors[i].colliderTriggerRoot.GetComponentsInChildren <ColliderTriggerButton>(); for (int k = 0; k < childTran.Length; k++) { DestroyImmediate(childTran[k].gameObject); } for (int j = 0; j < point360Floors[i].cubemapGroup.Length; j++) { string[] splitNameString = point360Floors[i].cubemapGroup[j].name.Split('_'); // Debug.Log(splitNameString.Length); if (splitNameString.Length != 4) { Debug.LogError(point360Floors[i].cubemapGroup[j].name + "名字不标准"); return; } string cubemapName = splitNameString[0]; float fx, fy, fz; Vector3 pos = new Vector3(); if (float.TryParse(splitNameString[1], out fx) && float.TryParse(splitNameString[2], out fy) && float.TryParse(splitNameString[3], out fz)) { if (posUnit == Unit.mm) { fx = 0.001f * fx; fy = 0.001f * fy; fz = 0.001f * fz; } else if (posUnit == Unit.cm) { fx = 0.01f * fx; fy = 0.01f * fy; fz = 0.01f * fz; } if (posUpAxe == UpAxe.Y) { pos = new Vector3(fx, fy, fz); } else { pos = new Vector3(-fx, fz, fy); } GameObject point = GameObject.Instantiate(point360Perfab, Vector3.zero, new Quaternion(), point360Floors[i].colliderTriggerRoot); point.name = cubemapName; point.transform.localPosition = new Vector3(pos.x, pos.y - baseHeight, pos.z); ColliderTriggerButton co = point.GetComponent <ColliderTriggerButton>(); co.btnNameForRemote = cubemapName; //设置colliderTriggerTrue的按钮事件 BaseEventDelegate colliderTriggerTrue = new BaseEventDelegate(); colliderTriggerTrue.parameterTargetSlot = new int[] { 0, 6, 2 }; colliderTriggerTrue.parameterList = new EventParametar[3]; colliderTriggerTrue.parameterList[0].pObject = point360Floors[i].cubemapGroup[j]; colliderTriggerTrue.parameterList[1].pVec3 = new Vector3(point.transform.position.x, point.transform.position.y + baseHeight, point.transform.position.z); colliderTriggerTrue.parameterList[2].pFloat = 0; colliderTriggerTrue.excuteMethodName = "ChangeCubemap"; colliderTriggerTrue.targetMono = this; colliderTriggerTrue.currentEditorChooseFunName = "Point360Manager/ChangeCubemap"; colliderTriggerTrue.lastEditorChooseFunName = "Point360Manager/ChangeCubemap"; co.trueEventList.Add(colliderTriggerTrue); } else { Debug.LogError(point360Floors[i].cubemapGroup[j].name + "位置信息错误,请检查!"); } } } }