script Name:CustomImage
需要组件:Polygon Collider 2D
实现图片不规则区域点击
script Name:CustomImage
需要组件:Polygon Collider 2D
实现图片不规则区域点击
解决UI和3D物体之间的事件响应问题
ui响应,跟它重叠的3d物体不响应
Physics Raycaster+IPointerClickHandler组合
解决UI和3D物体同时响应的问题。
在ColliderUI代码里面加上:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ColliderUI : MonoBehaviour ,IPointerClickHandler{
private int _index;
// Use this for initialization
void Start () {
}
public void ChangeColor()
{
if (_index == 0)
{
GetComponent<Image>().color = Color.blue;
}
else {
GetComponent<Image>().color = Color.white;
}
_index = _index == 0 ? 1 : 0;
}
public void OnPointerClick(PointerEventData eventData)
{
ChangeColor();
// ExecuteAll(eventData);
}
public void ExecuteAll(PointerEventData eventData) {
List<RaycastResult> results = new List<RaycastResult>();
EventSystem.current.RaycastAll(eventData, results);
foreach (RaycastResult result in results) {
if (result.gameObject != gameObject)
{
ExecuteEvents.Execute(result.gameObject, eventData, ExecuteEvents.pointerClickHandler);
}
}
}
}
1.UI响应,与其重叠的物体不响应
2.同时响应
3.系统的响应
Collider2D OverlapPoint
我觉得最后不需要增加Vertor2 posTemrp这个变量来用于中间传递值,最后一次图片没有显示正常,是因为在给其他顶点赋值位置的时候,应该使用vertexTemp的坐标来乘,而不是上面uv中心点origin的坐标来乘
那个-2应该在2位置,不是4位置,
offset = endId(0) - _id(-2) - 1 = 1
所以endId(3) - offset(1) = 位置(2)
changeId(endId - offset)
UI和鼠标点击之间的响应
REWREWREW
关于DataUtility类中的各种getUV方法的作用解释(与图集有关):
https://blog.csdn.net/weixin_30826761/article/details/98998277
简单的来说就是把Prefabs拖拉到场景中 没了
痾痾痾痾痾 痾痾痾痾痾痾痾痾痾痾痾 建議X2
讲者...痾 痾 痾 的没完(讲重点即可
快受不了了
UI和3D物体之间的事件响应
三种情况:UI响应,3D物体不响应:同时响应:
三角形面片渲染,按顺时针渲染为正面,背面透明不渲染
给 camera 添加 Physics Raycaster 组件,并通过实现 IPointHandler 接口,实现区别 3d 物体和 ui 的点击