实现圆形按钮,原本是使用 alphHitTestMinimumThreshold

改成重载IsRaycastLocationValid来实现,直接贴代码

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
#if UNITY_EDITOR
using UnityEditor;
#endif public class UICircle : Image
{
RectTransform m_RectTransform;
protected UICircle()
{ }
protected override void OnPopulateMesh(VertexHelper vh)
{
vh.Clear();
}
public override bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera)
{
if(m_RectTransform == null)
m_RectTransform = GetComponent<RectTransform>();
Vector2 position;
RectTransformUtility.ScreenPointToLocalPointInRectangle(m_RectTransform, screenPoint, eventCamera, out position);
var w = m_RectTransform.rect.width;
var h = m_RectTransform.rect.height;
var x = position.x;
var y = position.y;
var radius = Mathf.Min(w, h) / ;
var b = x*x +y*y <=radius*radius;
Debug.Log(b);
return b;
} #if UNITY_EDITOR
protected override void Reset()
{
base.Reset(); }
#endif
}
#if UNITY_EDITOR
[CustomEditor(typeof(UICircle), true)]
public class UIPolygonInspector : Editor
{
public override void OnInspectorGUI()
{
}
}
#endif

参考

https://www.jianshu.com/p/e82b22a9c5eb

附上地址:

https://github.com/yingsz/UGUI/tree/master/UGUI

ugui中实现圆形按钮的更多相关文章

  1. UGUI 中Dropdown控件的使用经验

    UGUI 中Dropdown控件的使用经验 在Untiy的UGUI 刚出来的时候,是没有“下拉列表”(Dropdown)控件的,这在无形中给我们的UI界面开发带来困难,不过在Untiy5.2.2之后这 ...

  2. UGUI中Event Trigger的基本用法

    UGUI中Event Trigger的基本用法 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chin ...

  3. 【转】unity3d 在UGUI中制作自适应调整大小的滚动布局控件

    转自 http://blog.csdn.net/rcfalcon/article/details/43459387 在游戏中,我们很多地方需要用到scroll content的概念:我们需要一个容器, ...

  4. unity3d 在UGUI中制作自适应调整大小的滚动布局控件

    http://blog.csdn.net/rcfalcon/article/details/43459387 在游戏中,我们很多地方需要用到scroll content的概念:我们需要一个容器,能够指 ...

  5. (23)unity4.6学习Ugui中国文档-------非官方Demo1

    大家好,我是广东太阳.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unitym ...

  6. 【Unity3d游戏开发】浅谈UGUI中的Canvas以及三种画布渲染模式

    一.Canvas简介 Canvas画布是承载所有UI元素的区域.Canvas实际上是一个游戏对象上绑定了Canvas组件.所有的UI元素都必须是Canvas的自对象.如果场景中没有画布,那么我们创建任 ...

  7. (@WhiteTaken)UGUI中遇到的一些细碎的知识点

    最近接触Unity中UGUI的知识比较多,遇到的东西,就慢慢积累下来吧.用到就不用去网上找了. 1.Unity加载Sprite图片资源.在Unity中,我们可能会遇到,一张图片中,有多个UI,这时候导 ...

  8. UGUI中显示粒子特效

    今天在UGUI上显示粒子特效的时候遇到的一些问题,Mark一下.原理:修改特效中每一个ParticleSystem的Layer为UI,并且把ParticleSystemRenderer.sorting ...

  9. 【Unity游戏开发】你真的了解UGUI中的IPointerClickHandler吗?

    一.引子 马三在最近的开发工作中遇到了一个比较有意思的bug:“TableViewCell上面的某些自定义UI组件不能响应点击事件,并且它的父容器TableView也不能响应点击事件,但是TableV ...

随机推荐

  1. Codeforces Round #297 (Div. 2) 525D Arthur and Walls(dfs)

    D. Arthur and Walls time limit per test 2 seconds memory limit per test 512 megabytes input standard ...

  2. struts-config message-resources配置问题总结

    问题:我的app无法读取配置好的ApplicationResources.properties中的内容 解答:文件目录为 /webapp /WEB-INF /classes ApplicationRe ...

  3. Github 创建新分支

    一.clone Repository clone Github 上的Repository,如下: git clone git@github.com:FBing/design-patterns.git ...

  4. vim插件管理器的安装和配置-windows

    # vim插件管理器的安装和配置-windows ### 前言------------------------------ vim做一框功能强大的编辑器,扩展功能令人称奇,插件机制非常灵活- 本篇推荐 ...

  5. c3p0 APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks

    2018-01-04 15:02:03,319 ---com.mchange.v2.async.ThreadPoolAsynchronousRunner: com.mchange.v2.async.T ...

  6. iOS UITableViewHeaderFooterView设置背景色为透明

    给UITableViewHeaderFooterView设置背景色分2种情况 1.tableView在group模式下,UITableViewHeaderFooterView的背景色默认是透明的,此时 ...

  7. mvn命令若干:

    mvn命令若干: mvn -h,不会用时,可寻求帮助. mvn clean compile,将.java类编译为.class文件: mvn clean test, 执行单元测试.本质上,还是执行了一个 ...

  8. 第二百一十三节,jQuery EasyUI,NumberBox(数值输入框)组件

    jQuery EasyUI,NumberBox(数值输入框)组件 功能:只能输入数值,和各种数值的计算 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI ...

  9. 【vijos】1286 座位安排(状压dp)

    https://vijos.org/p/1286 这题好神不会捉... 首先我们知道所有情况有C(n*m, k)种,这个好搞.但是两两不相邻这个有点难搞.. 原来是状压dp..sigh. 设状态f[i ...

  10. 20个JS 小技巧超级实用

    1. 将彻底屏蔽鼠标右键 oncontextmenu=”window.event.returnValue=false” < table border oncontextmenu=return(f ...