Unity Ugui射线坐标转换总结】的更多相关文章

世界空间中的点坐标转换到屏幕坐标: screenPos = RectTransformUtility.WorldToScreenPoint(cam, worldPos.transform.position); UGUI物体的坐标转换到屏幕坐标: screenPos = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, uguiObj.transform.position); 屏幕坐标转换到UGUI坐标: Vector3 wor…
简述 最近在用UGUI的时候遇到了鼠标穿透的问题,就是说在UGUI和3D场景混合的情况下,点击UI区域同时也会 触发3D中物体的鼠标事件.比如下图中 这里给Cube加了一个鼠标点击改变颜色的代码,如下 view sourceprint? 1.void Update() 2.{ 3.if(Input.GetMouseButtonDown(0)) 4.{ 5.GetComponent<Renderer>().material.color = new Color(Random.value, Rand…
本文简要分析了Unity中射线检测的基本原理及用法,包括: Ray 射线 RaycastHit 光线投射碰撞信息 Raycast 光线投射 SphereCast 球体投射 OverlapSphere 相交球等 项目地址:Raycast - SouthBegonia Ray 射线 含义:官方解释为一条无穷的线,开始于origin点,朝向direction方向(但是,根据项目验证来看其默认长度为单位向量,只有对direction进行乘以倍率,才可实现延长射线,而非无穷) 用法: Ray ray =…
我们知道,如今的移动端设备分辨率五花八门,而开发过程中往往只取一种分辨率作为设计参考,例如采用1920*1080分辨率作为参考分辨率. 选定了一种参考分辨率后,美术设计人员就会固定以这样的分辨率来设计整个游戏的UI概念图:而这时就需要程序尽可能精准的匹配各种不同屏幕的分辨率. 好在Unity ugui中自带Canvas适配: 例如,我们要在手机上采用竖屏设计,可能就会用到如上这样的参考分辨率,这时Canvas画布会自动检测当前的屏幕分辨率并进行缩放. 为了更直观的了解ugui的缩放原则,我们可以…
还记得大学毕业刚工作的时候是做flash的开发,那时候看到别人写的各种各样的UI组件就非常佩服,后来自己也慢慢尝试着写,发现其实也就那么回事.UI的开发其实技术的成分相对来说不算多,但是一个好的UI是绝对少不了底层组件的支持的.我个人认为UI组件中相对比较复杂的就是List了,所以,这两天实现了一个UGUI的list,写了好几个版本,最终这个版本是相对比较好用的,在这我介绍一下大概思路,一是巩固一下知识做个记录,二是发扬一下分享精神.嘿嘿,大家多多赐教. 写List有两个重点是需要考虑的: 1.…
这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章 Unity UGUI图文混排源码(二):http://blog.csdn.net/qq992817263/article/details/51112311 1.首先来一个好消息,在最新版本的图文混排中,终于搞定了<quad>占位乱跳的问题,如果是从图文二过来已有工程的同学,可以将InlieText组件的Align By Geometry勾选上,对齐几何体,然而看字面意思…
Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):http://blog.csdn.net/qq992817263/article/details/51112311 为了方便整理,申请了一个专栏,链接:Unity UGUI图文混排专栏 图文混排解决方案二: 通过继承Text组件来获取文字的UIVertex并得到他的位置,通过Text富文本的<quad…
Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):http://blog.csdn.net/qq992817263/article/details/51112311 我从一开始想到的图文混排的概念都是通过文字间的空隙去粘贴一张图片,这样确定图片前面文字的最后一个位置变成了最主要的参数,接下来就给出两种解决方案 首先,先发UGUI源码的一个链接,很多东西…
目前在unity实现图文混排的好像都是通过自定义字体然后在文本获取字符的位置,用图片替换掉图片标签,这样对于支持英文来说,并没有什么影响.然后对于中文来说就是一个相当麻烦的事了,毕竟图文混排多用于游戏聊天,这样就需要将中文的所有常用汉字都添加进去,想想都不怎么科学 于是我就想在ugui自带的Text组件的基础上,实现图文混排,花了一点时间,也算有点成果了 整理一下,实现图文混排的步骤: 准备了一些图片,并制作了一个asset文件,将所有图片的信息保存进去,方便调用 写了一个SpriteGraph…
超详细的基础教程传送门:(持续更新中) Unity UGUI之Canvas&EventSystem:http://blog.csdn.net/qq992817263/article/details/51753844 Unity UGUI基础之Text:http://blog.csdn.net/qq992817263/article/details/51753864 Unity UGUI基础之Image:http://blog.csdn.net/qq992817263/article/detail…
Unity UGUI布局组件 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新!助力快速理解 Unity UGUI Layout 布局组件的使用场景为新手节省宝贵的时间,避免采坑! Chinar 教程效果: 1 Layout -- 布局组件 2 Create BG Image -- 创建背景 3 Create element -- 创建元素 4 Layout ComP…
Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件) 可以兼容VRTK.本人使用Unity5.4.1,SteamVR1.1.1,Curved UI - VR Ready Solution To Bend Warp Your Canvas  1.8,VRTK3.1.0可以完美的兼容使用,下载链接CSDN:https://download.csdn.net/down…
在使用序列帧之前需要准备好序列帧的图集,打图集的操作参考 [Unity UGUI图集系统]浅谈UGUI图集使用 准备好序列帧图集,序列帧的播放原理就是获取到图集中的所有图片,然后按照设置的速度按个赋值给Image,其余的都可以按照自己的需求加一些循环,是否设置原图大小等等功能 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public cla…
最新背包代码: Unity3D — — UGUI之简易背包 Unity版本:2017.3 功能:用UGUI实现简单的背包物品拖放/交换功能 一.简介 在UGUI下,物品的拖放脚本实现主要依赖于UnityEngine.EventSystems下的三个接口 IBeginDragHandler,  IDragHandler,  IEndDragHandler: 其次还有IPointerEnterHandler,IPointerExitHandler等接口来实现鼠标移入移出等操作的监控,同时引用这些接口…
UGUI 系统虽然提供了很多封装好的组件,但是要实现一些特定的功能还是显得非常有限,这时候就需要使用事件接口来完成UI功能的实现.比如我们想实现鼠标移动到图片上时自动显示图片的文字介绍,一般思路会想到写个射线来检测,但其实这样的检测UGUI已经替我们完成了,我们只需要实现检测到目标对象后所要执行的代码即可! UI 组件都是基于 UGUI 封装好的类和接口以及一些 Editor 文件来进行封装制作供开发者使用的,开发者利用这些封装好的工具,只需更专注于功能开发即可.UGUI 的代码是开源的,开发者…
最近在做Unity基于UGUI的摇杆,发现了一种非常简单并且巧妙的方法,原文在这里, 不过要FQ!!http://godstamps.blogspot.tw/2015/07/unity-ugui-scrollrect.html 它的原理就是利用ScrollRect来限制摇块的摇动区域,但是ScrollRect是矩形的,我们的摇杆的摇动区域应该是个圆形的才对.所以顺着这个思路我简单的改了改. 如下图所示, ScrollCircle就是摇杆的背景, 里面的Image就是摇块. 代码 using Un…
UGUI RectTransform.Unity RectTransform详解 The first:look look API. http://docs.unity3d.com/ScriptReference/RectTransform.html 在新的UI系统中,无论Button,Text,Image,Toggle等组件,都是基于RectTransform进行布局的. 你可以不知Button为何物,不知Text为何物,不知Image为何物,但是一定要知道RectTransform. 自Uni…
ugui Input Field,获取输入的字符串. 错误方法: string content=inputField.FindChild("Text").text; 这样得到的是输入框中当前盛下的字符串,如果输入框面积小于输入内容,则此时得到的只是输入内容中的一段. 正确方法: string content=inputField.getComponent<InputField>().text 这样得到的才是完整的输入内容. 说明见unity文档: To obtains th…
1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上). Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测:反面展示时,不会接收到射线检测:否则,正反面展示都会接收到射线检测 Blocking Objects:屏蔽指定类型的(物理)对象,使它们不参与射线检测.渲染模式不为ScreenSpa…
在UI功能开发实践中,列表UI容器是我们经常使用一种UI容器组件.这种组件就根据输入的数据集合生成对应数据项目.从显示的方向来说,一般就分为水平排布和垂直排布的列表容器两种.列表容器为了在有限的界面空间中显示全部的数据,都会搭配使用UGUI的ScrollRect和Mask组件,我们只需要上下滑动,就可以浏览所要呈现的信息.但是,在UGUI中有几条数据就生成对应条目数的数据视图项,未免有些太过于奢侈.因为,每个数据项目不仅仅是一个UGUI的显示组件,而是多个显示组件(比如几个Text和Image)…
UGUI的Image等价于NGUI的Sprite组件,用于显示图片. 一.Image组件: Source Image(图像源):纹理格式为Sprite(2D and UI)的图片资源(导入图片后选择Texture Type为Sprite(2D and UI)). Color(颜色):图片叠加色. Material(材质):图片叠加材质. Raycast Target(射线投射目标):是否作为射线投射目标. Image Type(图片显示类型):Simple(基本的),图片整张全显示,不裁切,不叠…
最近想写一套关于UGUI所有控件的基础使用教程系列,主要是根据本人的使用心得来写的,所以其中可能难以避免会有不正确的地方. 好了进入主题,既然是第一篇,我觉得我有必要先介绍一下UGUI必不可缺的两个组件:Canvas和EventSystem 事实上在场景中第一次创建UGUI控件的时候,这两个物体都会自动添加到场景中,当然,必不可缺的不是这两个物体,而是他们身上挂载的组件. 一.Canvas作为所有UGUI控件的父级,他管理着下属所有控件的布局. Canvas组件: Render Mode(渲染模…
1.有个控件叫Selectable 这个控件在button,slider等身上有,也可以自行添加,可通过API搜索所有带这个控件的物体统一控制. 2.实现ScrollView只使用Scrollbar操作滚动,不允许鼠标滑动滚动域滚动 Image,Button组件都无法阻止ScrollRect的事件监测,但是slide,InputField可以,所以在具体的Item身上挂载这两个组件并设为Interactable即可(具体的事件监测机制未了解) 3.用Image组件,加载图片保证图片宽高比 pri…
UGUI Toggle Group用法教程 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新!助力快速理解 UGUI 中 Toggle Group 组件用法为新手节省宝贵的时间,避免采坑! Chinar 教程效果: 1 Description -- 说明 2 Create ManyToggle -- 创建多个开关 3 Add Toggle Group -- 添加开关组…
说到拖拽,那必然离不开坐标,UGUI 的坐标有点不一样,它有两种坐标,一种是屏幕坐标,还有一种就是 UI 在Canvas内的坐标(暂时叫做ugui坐标),这两个坐标是不一样的,所以拖拽就需要转换. 因为鼠标的移动是屏幕坐标,而 UI 的移动是ugui坐标.转换的方法: RectTransformUtility.ScreenPointToLocalPointInRectangle ( … ); 这个方法可以把屏幕坐标转换成 ugui 坐标.这里我们只需要知道 UI 的坐标和鼠标的坐标是不一样的,他…
本文仅仅记录自己在工作中踩到的ugui的坑.并讲述如何填的坑. 干货罗列在前,不愿意看的,拿东西走人,自己研究: RectTransform m_Rect m_Rect.localPosition m_Rect.rect (m_Rect.rect.width  m_Rect.rect.height) m_Rect.pivot m_Rect.sizeDelta 关于ugui的排版方面,刚上手的时候,觉得:哎哟!不错,这个刁. 但是如果你使用过qt等软件,其实ugui的对齐功能还是很落后的. 如果你…
公司要做一个这东西. A是滑动区域,ScrollRect组件. B是各种选项. C是拾取到鼠标(或触点)的选项. D是拖放区域. 大概要求是这样. 因为B的条目很多,放在A里可以滑动查看.如果要选择一个B,需要长按B,待时间足够之后生产一个新的C.拖动到D区域释放,则给D添加一个节点.其他区域则取消. 如果按住B的时间不够长,又动了鼠标(或触点),则当前滑动操作由A响应,产生A的滑动效果. 这里涉及到一个消息透传的问题. 解释一下自己在做的过程中采用的2个方案以及各自问题. 涉及的函数有以下几个…
http://blog.csdn.net/lyh916/article/details/50947026 1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上). Ignore Reversed Graphics:是否忽略反方向的图形,如果为true,则表示图形正面展示时,会接收到射线检测:反面展示时,不会接收到射线检测:否则,正反面展示都会接收到射线检测 Bloc…
理论上,只要一个按钮自己这一层或者子节点有一个控件勾选了RaycastTarget,并且按钮为Interactable的.并且不被其他可以点击的控件阻挡,那么这个按钮就可以被点击 在调一个界面时发现一个诡异的问题,有个按钮死活无法点击,EventSystem无法检测到.旁边的一个按钮却是ok的 对比了下,发现两者的区别是: 可点击的 x轴旋转-180 不可点击 无旋转 将不可点击的旋转-180,发现可以点击了 排查父节点,发现父节点挂了个Image为了做表现,旋转了180. 既然确定问题是旋转导…
撰写本文时使用Unity的版本为2017.4.10f1(64bit) 1.描述问题 需求:通过UGUI制作一个界面之后,我需要在界面的后面跟前面各添加一个特效. 问题:同一层级UI是最后渲染的,所以UI永远是在最上面 解决:分别调整ui_effect1.imageWhile.ui_effect2这三个物品的渲染层级 2.层级知识补充 https://blog.csdn.net/leansmall/article/details/66478412 3.解决方案 需要设置层级的Object分为三种:…