unity3d ngui用的是ugui 还是ngui

推荐这篇日记的豆列
&&&&&&&&&&&&
&(2人关注)跪求官方UI系统(2014年11月底已出,用原生的比用NGUI放心)
uGUI注意点
1.要防止多个canvas叠加点击穿透,canvas里面的graphics raycaster调整到恰当选项
2.防止canvas在物体上层,点击canvas却穿透到物体上,触发物体的点击的事件。请參见以下演示样例代码
using UnityE
using System.C
public class button : MonoBehaviour
public void OnMouseDown()
if (!UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
Debug.Log(&aa&);
3.不须要加入boxcollider。这点与NGUI不同
4.Resource目录里面的sprite居然是不能用sprite packer打包的,放在其它的目录里面能够
-------------------------------------------------------------------------------------------------------------------------------------------------------------
NGUI注意点
超级影响性能的几点
1.动画最好作用于panel而不是sprite
2.Sprite Type中的tile能不用就不用,卡死人
老版2.7.0GUI的scroll view的横竖限制是在scale里面设定的,动态字体不能用于Flash版
老版2.7.0的UIPlayTween的名字叫做UIButton Tween
16.NGUI的2DUI摄像头要将projection设置为Orthgraphic,Clipping Planes的Near要为负值不然动画不正常
NGUI的Camera的Depth要比主Camera高才干在主Camera之前显示
NGUI 和脚本中的屏幕坐标并不一致,须要进行ScreenToWorldPoint转化
NGUI要改变字体颜色须要在BMFont中设置字库图片为32位色图才行
NGUI能够输出富文本,带静态表情。动态不行
NGUI能够附加UIPanel进行方形遮罩,不规则图形还得採取其它方案
NGUI的位置记得要用localposition而不是position
NGUI的Tween动画能够通过Add Component中的NGUI-&Interaction-&PlayTween来控制动画的正着放或者倒着放
而且能够设置播放前启用,播放后禁用物体。include children打勾貌似出错,或者脚本中也能够写PlayReverse
NGUI中一个元素要能触发OnClick事件。必需要在UICamera的渲染范围内,位于UICamera的Event Mask包括中。并且有Collider才行
NGUI中有个OnPress(bool isPressed)能够检測按键的弹起和按下。isPressed==true,按下的那一瞬间。isPressed=false,弹起的那一瞬间
NGUI中的元素要可以互动或启用,比方button和输入框或者ScrollView等。必须加一个Collider才行
3.0.6之后的DraggablePanel的脚本名字变了。叫做DragScrollView
要启用CenterOnChild,可能须要又一次打开该场景文件并调整各个Sprite的轴是否在中心
附加UIButton后能够在组件改动面板中改动OnClick以调用脚本中的public接口
NGUI的物体变成预置然后再实例化会失去预置之外的其它物体上挂载的脚本命令调用
NGUI改动button颜色不能改动UISprite.color,须要改动UIButton.defaultcolor,并禁用再启用该button才干看到变化效果
NGUI自带的动画系统正着放倒着放和ResetToBeginning有些小bug
新版3.0.7带了个Layout布局系统,大大简化了布局繁琐程度
能够用类似的语句直接进行相对位置改动
label.leftAnchor.target = obj.
label.leftAnchor.absolute = -25;
阅读(...) 评论()现在unity的ui用NGUI好还是UGUI好_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
现在unity的ui用NGUI好还是UGUI好
我有更好的答案
但是是4做ui有不止一种插件,UGUI是unity官方的UI, 我知道的有NGUI和dfgui和UGUI
采纳率:95%
来自团队:
为您推荐:
其他类似问题
unity的相关知识
等待您来回答过程是这样的:最近一直想做一个头像的mask效果,后来发现原来unity的mask需要用shader来写,网上找了不少资料,也能实现,不过大多数都是用render texture作为相机投影的texture。然后把这个相机的图像作为一个material,然后在ngui中创建一个texture,把这个material赋给texture。怎么说呢,这种方式虽然也能实现,但是必须要创建一个相机,对于一个大型项目来说有点不切实际。一个头像加个mask多简单的一件事,肯定有更好的办法。
最终还是找到了一种很好的方法,这种方法更接近想象中的方法,废话不多说了,跟我一步步做吧!
首先,我们需要新建一个shader。然后给他添加下面的代码。
在project试图中,右键-&Create-&Shader,新建一个shader,名字随便。
Shader "Unlit/Transparent Colored with mask" {
Properties {
_MainTex ("Base (RGB), Alpha (A)", 2D) = "white" {}
_AlphaTex ("Yeahyeah", 2D) = "white" {}
SubShader{
"Queue" = "Transparent"
"IgnoreProjector" = "True"
"RenderType" = "Transparent"
Lighting Off
ZWrite Off
Fog { Mode Off }
Offset -1, -1
ColorMask RGB
AlphaTest Greater .01
Blend SrcAlpha OneMinusSrcAlpha
ColorMaterial AmbientAndDiffuse
SetTexture [_MainTex] {
Combine Texture * Primary
SetTexture [_AlphaTex] {
Combine previous, texture
顺便说下shader吧。太官方了可能不好理解,大概意思就是,在渲染的时候shader规定了某些规则,这些规则往往是用来实现某些炫酷的特效,或者为了某使些功能更高效。
代码中的Properties相当于unity脚本中的公共变量,当把shader赋给某个material时这些变量就能想出来,你可以给他赋值 ,跟unity脚本基本一样。
代码中的SubShader是子渲染器,这里面就能访问到前面设置的变量,这里主要是实现shader功能的地方,当然你还可以在这里面定义函数,等等,但是函数是用的一种叫Cg / HLSL的语言。
Pass,是渲染通道。这里可以设置一些参数来规定渲染方式。
好了基本就这样,要想具体了解shader,看unity。
好了我们接着做mask。如果shader代码能看懂的话,基本你也就会做了。
它主要做了两件事:
1,给两个texture赋值,其实就是两张图片。
2,把_AlphaTex中不透明的像素和_MainTex中的像素输出,其实就相当在MainTex中抠出一个AlphaTex中不透明的那部分形状一样的图块。
其实刚开始我搜到了不少shader,很多都没有提到怎么使用,下面来看一下
其实很简单,点击建好的shader在inspector面板中你会看到
从project视图中把两张图片拖上去就可以了。
MainTex是你要显示的图片
AlphaTex是你要抠图的形状,注意这张图除了形状可以用任何颜色以外其他必须都是透明的,而且图的大小要跟MainTex图片一样大。
最后就是使用了,用NGUI创建一个Texture,把shader拖到UITexture脚本的shader变量中,你会发现兴奋的事情发生啦!!最终效果如下:
OK,就到这里了,gook luck!
阅读(...) 评论()}

我要回帖

更多关于 unity ugui和ngui 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信