uGUI元素显示在角色的头顶上

孙广东 2015.5.26

转载请注明出处:http://blog.csdn.net/u010019717

我们 游戏完全使用UGUI来工作,所以游戏中的很多元素都是UGUI的 Game Canvas画布设置为;World Space , 主要也是为了以后一下牛叉的效果

还有一个UI Canvas画布设置为;Screen Space - Overlay 就是这些元素会在最前方,在屏幕上的。

还有一组是:Spines Layer, 主要是放着spine制作的角色

2种解决方案:

第一种是 为角色创建子对象了类型是Canvas画布,Unity的官方事例是这么做的,可以自己去看看。这样在Hierarchy上是有上下级的层级关系的。

这种的话,Canvas的类型最简单是设置为:Screen Space - Overlay

第二种呢,其实也很简单,就是我得到角色的位置position, 然后转换为屏幕坐标系,然后在转换为UGUI所在画布和相机的坐标系即可,得到了这个就赋值给UI即可了。但是这样在Hierarchy上是没有上下级的层级关系的。一个属于Game Canvas画布,一个在Spines Layer中,但是角色会有UI的引用。

     Vector3 first = ExploreBattleManager.Instance.MainCamera.GetComponent<Camera>().WorldToScreenPoint(transform.position); //把角色在主摄像机的世界坐标转化为屏幕坐标[注:first的结果的z值是原来世界坐标的z]
     first = new Vector3(first.x, first.y, 100);	// 设置这个z的意思是想让角色的位置映射到UICamera的多远距离的平面上。 这里我们希望映射到Game Canvas画布相对于相机的距离,怎么看?如果是Screen Space - Camera的话就是如下图的Plane Distance值了。  如果是World Space :值就是两个z值的差了:
     skillList.transform.position = ExploreBattleManager.Instance.UICamera.GetComponent<Camera>().ScreenToWorldPoint(first);

              

??

??

时间: 2024-12-14 07:03:47

uGUI元素显示在角色的头顶上的相关文章

JS-004-JavaScript 操作常见 web 元素之四-判断元素显示状态

在日常的 web 编程或 UI自动化脚本编写过程中,经常会遇到判断页面元素的显示状态,以对应的执行相应的操作.此文主要以 js 判断页面元素的存在状态为例,简单叙述一下 js 是如何判断元素的显示状态的,敬请小主们参阅.若有不足之处,敬请大神们不吝指正,不胜感激! 多不言述,小二上码咯. 以下为简单的 HTML 源码,如下所示: 1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content=&quo

元素显示隐藏的9种思路

× 目录 [1]display [2]visibility [3]hidden[4]opacity[5]overflow[6]clip[7]transform[8]覆盖[9]偏移 前面的话 在网页制作中,元素的显示隐藏是非常常见的需求.本文将介绍元素显示隐藏的9种思路 思路一: display 对于元素显隐来说,最常见就是display:none | display:block,但是使用这种方法有个问题,元素的display属性在隐藏前并不都是block,还有可能是inline.inline-b

jquery中使元素显示和隐藏方法之间的区别

在实际的项目开发中,要使一个元素隐藏的方法有很多,比如css的多种属性和jquery的多种方法,虽然他们的作用都是使元素不可见,但是各个方法实现的原理是不一样的.下面主要介绍jquery各个元素隐藏方法之间的区别. 1.show()和hide() 使用hide()方法隐藏元素实际上是同时减少元素的高度.宽度以及不透明度,直到这三个属性为0,最后设置元素的css属性disolay:none.show()方法从上到下增大元素的高度,从左到右增大元素的宽度,同时增加内容的不透明度,直至元素完全显示.

【Unity笔记】给UGUI元素添加交互性

如果想给UGUI元素添加交互性,如使一张图片能够被点击,具有normal.Highlighted.Pressed三态,可以给该物体添加组件Selectable. 已经具有交互性的物体不能再添加Selectable组件,如Button.

Jquery not选择器实现元素显示隐藏

初初认识jQuery的not选择器,想要实现的功能是,点击第一个div,显示第二个div,点击第一个div以外的地方,隐藏第二个div. 具体代码如下: <!DOCTYPE html> <html> <head> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(

AngularJS入门(用ng-hide指令实现元素显示和隐藏)

控制html元素显示和隐藏有n种方法:html的hidden.css的display.jquery的hide()和show().bootstrap的.hide.今天的重点不是显示和隐藏,而是监听某个布尔变量值,自动改变元素显示和隐藏状态.监听函数.if判断.选择dom.设置dom,5行代码搞不定吧,而且毫无技术含量. 看代码: <!DOCTYPE html> <html ng-app> <head> <meta charset="utf-8"&

UGUI中显示粒子特效

今天在UGUI上显示粒子特效的时候遇到的一些问题,Mark一下.原理:修改特效中每一个ParticleSystem的Layer为UI,并且把ParticleSystemRenderer.sortingOrder值设置为大于Canvas中的sortingOrder值.其实就是控制两个组件 的Render Order. 1. 在UI控件上(eg: Image)显示一个粒子特效 1).首先创建一个Canvas,RenderMode = Screen Space-Camera ,然后创建一个UICame

jQuery判断当前元素显示状态并控制元素的显示与隐藏

1.jQuery判断一个元素当前状态是显示还是隐藏 $("#id").is(':visible');   //true为显示,false为隐藏 $("#id").is(':hidden');   //true为隐藏,false为显示 if($("#id").is(':hidden')){ //逻辑代码 } 2.jQuery控制css的display $("#id").show();    //表示display:block $

AmazeUI 点击元素显示全屏

无论是点击图片还是按钮来显示全屏,具体代码如下: 点击按钮: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript" src="js/jquery.min.js"></script> <script ty