UGUI解决嵌套使用多个ScrollRect时的Drag拖动冲突问题
很简单,直接看代码:
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine; /// <summary>
/// 解决嵌套使用ScrollRect时的Drag冲突问题。请将该脚本放置到内层ScrollRect上(外层的ScrollRect的Drag事件会被内层的拦截)
/// </summary>
public class NestedScrollRect : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
/// <summary>
/// 外层被拦截需要正常拖动的ScrollRect,可不指定,默认在父对象中找
/// </summary>
public ScrollRect anotherScrollRect;
/// <summary>
/// 当前的ScrollRect(本脚本所放置的物体上)的拖动方向默认为上下拖动,否则为左右拖动型
/// </summary>
public bool thisIsUpAndDown = true; private ScrollRect thisScrollRect; void Awake ()
{
thisScrollRect = GetComponent<ScrollRect> ();
if (anotherScrollRect == null)
anotherScrollRect = GetComponentsInParent<ScrollRect> ()[];
} public void OnBeginDrag (PointerEventData eventData)
{
anotherScrollRect.OnBeginDrag (eventData);
} public void OnDrag (PointerEventData eventData)
{
anotherScrollRect.OnDrag (eventData);
float angle = Vector2.Angle (eventData.delta, Vector2.up);
//判断拖动方向,防止水平与垂直方向同时响应导致的拖动时整个界面都会动
if (angle > 45f && angle < 135f)
{
thisScrollRect.enabled = !thisIsUpAndDown;
anotherScrollRect.enabled = thisIsUpAndDown;
}
else
{
anotherScrollRect.enabled = !thisIsUpAndDown;
thisScrollRect.enabled = thisIsUpAndDown;
}
} public void OnEndDrag (PointerEventData eventData)
{
anotherScrollRect.OnEndDrag (eventData);
anotherScrollRect.enabled = true;
thisScrollRect.enabled = true;
}
}
UGUI解决嵌套使用多个ScrollRect时的Drag拖动冲突问题的更多相关文章
- extjs folder is lost解决方法 和 FineUI主题切换时 iframe内的内容主题不变的解决方法
错误原因:extjs包和FineUI版本不一致 或者是 webconfig配置中 没有设置为任何人可访问 解放方法下载和FineUI版本相同的extjs包就ok了 解决方法:FineUI主题切换时 ...
- 解决在Linux下安装Oracle时的中文乱码问题
本帖最后由 TsengYia 于 2012-2-22 17:06 编辑 解决在Linux下安装Oracle时的中文乱码问题 操作系统:Red Hat Enterprise Linux 6.1数据库:O ...
- 解决JSONObject.fromObject数字为null时被转换为0
在使用JSONObject.fromObject的时候会遇到一种情况就是当对象的某一个Double型或Integer型的属性为空的时候,转JSON的时候会变成0.当一个布尔型的属性为空的时候,转JSO ...
- 解决嵌套GridView显示不全的问题
package com.adan.selectcitydome.view; import android.content.Context; import android.util.AttributeS ...
- mysql 主从,主主,主主复制时的主键冲突解决
原理:slave 的i/o thread ,不断的去master抓取 bin_log, 写入到本地relay_log 然后sql thread不断的更新slave的数据 把主服务器所有的数据复制给从服 ...
- 使用 PDBDownloader 解决 IDA 加载 ntoskrnl.exe 时符号不完全问题
解决 IDA 加载 ntoskrnl.exe 时符号不完全问题 1. 问题:IDA加载xp系统的 ntoskrnl.exe 加载不完全. 2. 尝试过但未成功的解决方案: 1)配置好的IDA的 pdb ...
- 190628 - 解决新版本LastPass没有谷歌套件时打开就闪退的问题.md
目录 解决新版本LastPass没有谷歌套件时打开就闪退的问题 可用解决方案 可用解决方案3 可用解决方案2 可用解决方案1 尝试安装 碰到的问题列表 问题现象 解决新版本LastPass没有谷歌套件 ...
- idea 为模块添加Tomcat依赖 解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包
解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包 今天创建SpringMVC项目时 用到HttpServletRequest时, 发现项目中根本没有Servlet这个包, ...
- 解决 Retrofit 多 BaseUrl 及运行时动态改变 BaseUrl ?
原文地址: juejin.im/post/597856- 解决Retrofit多BaseUrl及运行时动态改变BaseUrl(一) 解决Retrofit多BaseUrl及运行时动态改变BaseUrl( ...
随机推荐
- html5 css3 进度条特效
https://www.html5tricks.com/tag/css3%E8%BF%9B%E5%BA%A6%E6%9D%A1/page/3
- persisted? vs new_record?
https://joe11051105.gitbooks.io/you-need-to-know-about-ruby-on-rails/content/activerecord/persisted_ ...
- python neo4j
https://neo4j.com/developer/python/ http://debian.neo4j.org/
- [原创]java WEB学习笔记13:JSP介绍(背景,特点,原理)
JSP介绍:(理解) 1)JSP背景 ①在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变: ②如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态 ...
- POJ 之 1002 :487-3279
487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 242418 Accepted: 42978 Descr ...
- 2017人工智能元年,AI在喧嚣和质疑中一路走来
前百度首席科学家吴恩达说:就像100年前的电力.20年前的互联网一样,AI也会改变每一个产业! 有人说,现在就像1995年,那一年,第一家互联网公司--网景上市,一天之内大涨208%,互联网正式登上历 ...
- 【leetcode刷题笔记】Roman to Integer
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- 2017-2018-1 20179203 《Linux内核原理与分析》第五周作业
攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/US ...
- 在oracle中,select语句查询字段中非纯数字值
最近,将原来的数字符字段转换为数字时,总报错误:无效数字. 如何找出其中哪些是非数字字符的记录?比较麻烦的事.下面是用Oracle DB自带的函数translate可以找出来的 1.创建测试表 Cre ...
- 系统原生文件MD5值获取
windows: certutil -hashfile filePath MD5 certutil -hashfile filePath SHA1 Linux md5sum filePath s ...