下面写的是一些UGUI常用的静态方法,大家可以自用
//效果:UGUI:为一个物体提供一种遮罩效果(如选中效果)
/// <summary>///UGUI为一个UI提供遮罩效果或消除这个遮罩效果,并返回这个遮罩物体
/// </summary>
/// <param name="name"></param>
/// <param name="resourcePath">遮罩的路径</param>
/// <param name="parent">遮罩的父亲</param>
public static GameObject ShowBlackBg(string name, string resourcePath, Transform parent, bool isShow)
{
GameObject go;
if (parent.Find(name + "(Clone)") == null)
{
go = GameObject.Instantiate(Resources.Load(resourcePath) as GameObject, parent);
}
else
{
go = parent.Find(name + "(Clone)").gameObject;
}
//显示或隐藏该遮罩
go.SetActive(isShow);
return go;
}
//判断UGUI的点击事件是否点在了UI上
public static bool IsCursorOnUI(int inputID = -1)
{
EventSystem eventSystem = EventSystem.current;
return (eventSystem.IsPointerOverGameObject(inputID));
}
//处理面板的自适应问题,当鼠标点在右下方的时候,弹出的面板出现在左上方;当鼠标出现在右下方的时候,面板出现在左上方
策略一,将右半屏幕分成四块,得到面板的中心点Pivot(居左上,左下还是右上,右下)
public static Vector2 GetPivot()
{
//分界线,这里设置的区间是0-3/4, 3/4-1两个区间
int middleWidth = Screen.width * 3 / 4;
int middleHeight = Screen.height * 3 / 4;
//左下
if (Input.mousePosition.x < middleWidth && Input.mousePosition.y < middleHeight)
return new Vector2(0, 0);
//右下
if (Input.mousePosition.x >= middleWidth && Input.mousePosition.y < middleHeight)
return new Vector2(1, 0);
//左上
if (Input.mousePosition.x < middleWidth && Input.mousePosition.y >= middleHeight)
return new Vector2(0, 1);
//右上
if (Input.mousePosition.x >= middleWidth && Input.mousePosition.y >= middleHeight)
return new Vector2(1, 1);
return Vector2.zero;
}