Unity3D的NGUI插件导入工程后提示错误:UnityEngine.quality controlSettings、 Getquality controlLevel

26003人阅读
屏幕自适应
NGUI可以比较方便的实现屏幕自适应,但是它的官方教程里面针对这个问题没有详细的教程,所以可能在实现的时候会走比较多的弯路。以下是我在开发过程中找到的一个比较方便的实现方法。
1. UIAnchor
这个是用来确定控件在屏幕中的位置,另外有一篇教程专门讲它的功能,所有不会再赘述
2. UIStretch
这个是用来做缩放的组件。老版本的NGUI是集成在UIAnchor上的。新版本的UIStretch提供了4种缩放方式:
Horizontal:只缩放水平方向
Vertical:只缩放垂直方向
Bose:缩放两个方向
:基于高度等比缩放
然后基于这些我自己实现了一个
:基于宽度等比缩放
代码如下:
else if(style == Style.BasedOnWidth)
localScale.x = relativeSize.x * screenW
localScale.y = relativeSize.y * screenW
localScale.z = localScale.x;
这段代码添加在Update方法里面。为了能将UIStretch挂在UIPanel上面不出问题,所有将Z轴也缩放了。
自适应流程
1. 创建一个新的UI,将Anchor里面的UIAnchor调整的合适的位置,注意最好将Anchor设置为Bottom。
2. 将调节到默认屏幕大小。比如UI是以960*640分辨率制作的,那么将调整到960。
3. 在Panel上面添加一个UIStretch,模式选择。完成之后你可以看到你的被修改到了当前屏幕的X方向分辨率大小。
4. 将UI控件添加到Panel上,调整位置,在Panel下的所有控件都会以X方向为标准做等比缩放来适应屏幕大小。
5. 添加一张作为背景的图,将UISprite的anchor设置为Bottom,添加之后你可以看到这个sprite可以在不同的分辨率下自适应了。
6. 以上一步添加的背景图作为参照物来摆放页面上的控件,这样不仅仅是大小,位置也同样会按照相同的模式进行等比缩放
7. 可以在第3步创建的Panel下面添加子Panel,子Panel不需要UIStretch(一般用来做Draggable Panel,否则没必要,会增加额外的Draw Call)
8. 如果某一些控件需要定位在屏幕上下左右中的某一角,可以单独给他添加一个UIAnchor,这个时候UIStretch只会缩放这个控件的大小,它的位置由他自己的UIAnchor控制了
如果还有什么问题,欢迎大家拍砖,喷碳酸盐水
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:66507次
排名:千里之外
评论:18条阅读:1636回复:6
[提问]:NGUI导入后不能使用
发布于: 11:32
NGUI 版本:NGUI_Next-Gen_UI_v2.0.3d.unitypackageUNITY版本:3.1.0f4&导入后没有出现NGUI的菜单,project栏里有一个NGUI的文件夹,里面有一堆东西。这时候在运行我原来的项目是报错如下:&Assets/NGUI/Examples/Scripts/Other/DragDropItem.cs(95,38): error CS1061: Type `UnityEngine.Collider' does not contain a definition for `enabled' and no extension method `enabled' of type `UnityEngine.Collider' could be found (are you missing a using directive or an assembly reference?)
鲜花3117朵
发布于: 15:28
untiy和ngui你的版本都很老哇
请支持我,让Unity圣典做的更好。
发布于: 15:49
very good!!!
鲜花1433朵
发布于: 16:34
& 建议你unity起码要3.4.2以上,ngui起码1.82以上 &不然可能有错
cocos2dx 转职成unity3d的苦手
发布于: 17:02
哪里有好用的新WINDOWS版本啊?
发布于: 18:17
unity3.5能够稳定正常运行 &3.4版本文本输入框有误 其他的都可以
发布于: 09:06
您需要登录后才可以回帖,&或者&
Powered by查看: 3082|回复: 0
最后登录注册时间阅读权限100积分52683
纳金币52191 精华30
本文转载于互联网,是一个比较经典帖子,特来分享:
UICamera-可以添加到任何相机,包含事件系统.UICamera是每个UI的重要组成部分.它负责发送Camera中所有NGUI的活动.如果场景中仅有一个Camera,要确保它附有UICamera脚本.如果有多个相机,确保至少用来渲染UI的相机有UICamera脚本.当将这个脚本放在主相机上时,在游戏场景中的所有都将有OnClick, OnHover, OnDrag等事件.参数
Tooltip Delay:设定悬停与对象多少秒才执行OnTooltip事件.
如果使用Orthographic Projection相机,建议将相机的Size的尺寸设置为当前分辨率高度的一半.比如针对iPad的屏幕分辨率,就设置Size为384.另外一种方法是保持Size是1,缩放UI的Root为该值的倒数,比如在iPad上获得完美尺寸你需要设置Root的缩放到1/384或者0..第二种方法比较容易实行,不过物体在场景视图中照比其他物体会比较小.如果你仍旧不知道怎么设置正交相机的尺寸,那么尝试看看下面这图. UIAtlas-定义精灵的纹理图UIAtlas是一个容器,它包含了一堆sprite的坐标信息.如果你不熟悉这个概念.你可以这样认为:使用一张包含很多小贴图的大贴图比用若干张小贴图更有效率.而大贴图中的小的贴图被称作为精灵(sprite),大纹理成为图集(atlas).你使用NGUI之前都需要创建一个图集(或使用现有的).可以从这里了解图集的做法.当然也可以直接使用UITexture,但它并不能应对所有问题. Material:是描述绘制本图集的材料.通常推荐用unlit着色器,比如用.Unlit – Transparent Colored为NGUI.
TP Import:用于导入从TexturePacker导出的精灵.只需要拖拽输出的Txt文件和所有精灵即可.
Coordinates:这允许你从基于像素的坐标系切换为基于UV的坐标系.通常都是以像素坐标系制作,但如果你需要重新调整纹理,则要先切换为纹理坐标.
New Sprite:允许已当前选择的精灵为范本创建新的精灵.
Delete:删除所选精灵.
Sprite:可以通过下拉列表选择所有正在使用的精灵.
Edit Name:重命名精灵的名称.
Outer Rect:设置精灵的外边框.
Inner Rect 设置精灵的内边框,如果你不使用UISlicedSprite,可以跳过这个设置.
Padding:微调校正精灵的偏移量
Correction:基础的校正精灵的坐标使用完美整数像素.
Show:检查精灵在图集中的位置.提示
可以将精灵组织成组创建多个图集.只要图集共享相同的材质,那么控件仍旧会使用很少的DrawCall.
为达到最佳效果,推荐将纹理的wrap模式设置为&Clamp&和将格式设置为&***ecolor&.
将类似的纹理做成一个图集是很好的方式,但是要尽量减少同时使用的图集数量.
如果你是使用Texture Packer工具来创建图集,要在输出设置中选择.如果你是用创建图集,你能通过选择工具配合info panel面板来找出精灵的位置和尺寸.UIFont-字体图集
UIFont可以设置UI所使用的字体数据和材质.可以使用免费的BMFont,或使用更专业的Glyph Designer.一般只做一次字体,保存为一个预设,作为新标签所用的字体.参数:Import Font:用于导入Glyph Designer.或BMFont输出的FNT(改后缀为TXT)数据.
UIAtlas:用来设置字体纹理所在的图集,根据是否已选定UIAtlas,你会看到一下选项
如果UIAtlas已指定,你可以选择使用字体的精灵.
如果没有指定UIAtlas,你可以选择用来绘制字体的材质.在NGUI中通常用&Unlit&类别下的着色器,如“Unlit – Transparent Colored&.
你可以调整字体在材质纹理内的像素矩形.
快速校正完美像素坐标,四舍五入到最近的像素值.
Spacing:可以调整字符之间的间距.
Show:检查字体在纹理贴图中的位置.提示
为达到最佳效果,推荐将纹理的wrap模式设置为&Clamp&和将格式设置为&***ecolor&.
可以将多个字体合并为一个图集.这样整个UI使用这些字体,仍旧会保持一个DrawCall.
你可以给字体增加斜角,阴影,描边等效果,只要确保BMFont导出之前你设置好足够的边距和间距就可以了.UISprite-从图集中画一个精灵UISprite是第二个不常用的插件(第一个是UITexture),它唯一用途就是绘制地图集的一部分.参数
Transform:是很重要的一个组件,每个控件都可以通过Transform来进行位置和大小的调整.它也会影响到&Make Pixel-Perfect&.你可以在它和UICamera之间任选一个来进行&完美像素&的调整.
UIAtlas:用来指定所使用的图集.拖拽或者按下左侧的按钮选择最近使用的图集.
Sprite:选择图集中使用的精灵.选择好精灵后.点击一下&Make Pixel-Perfect&会自动为你调整Transform的尺寸.
Depth是避免用Unity的Z排序(效率不好),而且如果你要旋转UI窗口.单纯的通过调整每个控件的Transform的Z轴来排序是不行的.所以要用这个深度来排序.
Color Tint:用来调整色调.
Make Pixel-Perfect:让你快速调整控件的尺寸到实际像素尺寸.
Pivot:选择部件的坐标原点位置.
Preview:预览精灵的纹理.提示:
如果你看到两个控件有闪烁,意味着你设置了同样的Depth导致了重叠,你要调整不同的深度,让它们不重叠.
不要把多个控件混在一起,否则会影响到完美像素这个功能.添加新控件时要注意保持创建新的子对象.
也可以在使用完美像素按钮后再移动组合控件.Label-用指定的字体绘制一个文本标签
UILabel被用来显示文字.支持多行,只需要用&
&换行即可.允许用[RrGgBb]来建立彩色文字参数:
Transform:是很重要的一个组件,每个控件都可以通过Transform来进行位置和大小的调整.它也会影响到&Make Pixel-Perfect&.你可以在它和UICamera之间任选一个来进行&完美像素&的调整.
UIFont:你可以选择用于这个标签的字体.你可以拖拽预设或者按下按钮选择最近使用的字体.
可以通过使用&
&来决定标签是多行还是单行,同样可以用16进制颜色值来定义彩色文字,以[RrGgBb]开始,以[-]结束.如&Hello [FF0000]World[-]!&,最后的结果是World是红色的文字.
Line Width:用来指定文字行的最大宽度,如果是单行文本则切掉超出的.如多行文本则会根据宽度自动换行.
Multi-line:选择该项后标签达到最大宽度后会自动换行.
Password:勾选后字符将自动转为星号.
Encoding:勾选后会关闭特殊字符处理,一般用于输入框.
Depth:改边标签控件的层级.
Color Tint:更改文本的主色调.
Make Pixel-Perfect: 让你快速调整控件的尺寸到实际像素尺寸.
Pivot:选择部件的坐标原点位置.
Preview:预览精灵的纹理.提示:
如果你看到文本闪烁或看到被其他控件覆盖了.那么就要调整它的深度.
如果遇到复杂字符串(如斜体,标点,括号混合的)需要增加行宽度避免超宽.
&和颜色,仅一个标签就可以做到下面的效果.UIPanel-为控件分组,用于管理和优化DrawCallsUIPanel用来负责创建实际的几何体.不必特别添加UIPanel,只要创建一个控件,它就会自动被添加.你可以创建多个Panel,用于多个菜单.参数:
Normals:显示法线,用来检查UI正反是否正确.
Gizmos:用来显示几何体,可供选取用.
Debug:配合调试检查场景视图的几何体,如果你开启了这个.就应该取消掉上面Gizmos这个选项.
Widgets:会显示有多少个控件在这个Panel上.
Draw Calls:可以看到用了多少个DrawCall,这个越低越好.
Clipping:可以选择你要显示的部分,默认是不进行裁切的.是利用着色器进行裁切的,如果开启这个选项,NGUI将自动切换为有裁切属性的着色器.
如果开启裁切.你可以通过Center和Size来设置裁切盒.单位为像素.
如果选择柔化边缘裁切,将会有40像素的柔化边缘供处理柔化效果.
Material:是只读的,可以看面板用了多少个材质.一个材质将占用一个DrawCall.提示:
默认情况下如果没有UIPanel的话,会被最根的控件创建并作为其父对象.而且最好让你多个控件都用一个父对象,便于管理.
如果Panels下没有控件.你可以放心的删除这个面板.
如果你删除一个存有控件的Panels,它和它下面的控件都会消失,但是当你播放时,所有控件又会重现,因为又自动创建了一个欣的UIPanel.
当没有变化时,几何体不会重建,这意味着如果有个完全静止的UI,不会没帧都去更新几何形状,相反它也会被重用,提高性能.UIAnchor-能让控件自动配合屏幕尺寸,填充满屏和保持真实像素尺寸的UI.UIAnchor有多种用途,其中包括在多种分辨率的屏幕的相对定位.
如果你将它放在2D UI的root上,它会自动进行完美像素处理.
如果将它用于一个对象,它将辅助对象在屏幕上的定位,比如侧边或者角落.
比如放在一个精灵上,可以用来将精灵自动填满整个屏幕,比如做个背景.参数:
HUD Camera是用来绘制该对象的相机,通常会自动选择的.
Side:设置锚点,有4个边,4个角和中心供选择.
Half Pixel Offset:让控件有半像素的位移以避免DirectX 9在Windows机器上的一个Bug.
Stretch To Fill:缩放填充,一般做背景时候会使用它.
Depth Offset:用于基于***相机时调整计算点的深度.提示:
如果对象有UIAnchor这个脚本,它自身的Transform将不接受你的修改,因为它受控于这个脚本.如果你希望添加基于这个锚点的位移,你可以添加一个子对象.比如你希望有个控件始终在屏幕偏移(100,100)这个位置,你应该在层次面板做这样的结构.UI-&Anchor-&Offset-&Widget.
UIAnchor同样可用于非正交相机.
如果UIOrthoCamera附加到相机,用UIAnchor创建的界面将固定尺寸和位置,无论你将屏幕尺寸改成多大.Events-NGUI强大的事件系统
UIEvents-事件系统
你可以添加下面的方法脚本到控件或者带有碰撞盒的游戏对象,当然也可以赋予给相机,不过需要相机同时有UICamera脚本:
void OnHover (bool isOver):当鼠标移出或者悬停在某个碰撞器上的时候返回布尔值.在触摸设备上不会有作用.
void OnPress (bool isDown):当鼠标或者触摸到碰撞器发生布尔值返回.
void OnSelect (bool selected):当鼠标或者触摸从OnPress发生后的释放将会返回这个布尔值.
void OnClick():和OnSelect的产生条件相同,当点击或触摸碰撞器并且没有发生拖拽时候触发.
void OnDrag (Vector2 delta):当移动鼠标或者触摸按下时候位移超过特定阀值时触发.
void OnDrop (GameObject drag):当鼠标或触摸释放于从发生OnDrag的不同碰撞器伤触发.传递的参数是产生OnDrag的游戏对象.
void OnInput (string text):当一个OnSelect发生后在同一个碰撞器上触发输入.一般只有UIInput用它.
void OnTooltip (bool show):当鼠标悬停超过tooltipDelay时间后触发该命令.触摸设备上不会有作用.可以用UICamera.lastCamera找到谁发出的事件,可用UICamera.lastHit得到谁接受这个事件,以及用UICamera.lastTouchPosition得到触摸或屏幕的位置下面的脚本赋予一个碰撞器时,点击这个碰撞器会输出HelloWorld.
站长推荐 /2
期待已久的第33期免费模型出炉啦!洗手台3d模型:数量71个,大小888M。完全免费下载哦!这样的福利我和我的小伙伴们都惊呆了!!下载地址:
他们正在参加节日创意设计大赛,快去吧!50个节日都在等你,用gif/flash秀出创意!好多礼品、大把现金向你招手,赶紧的!
400-067-3919
&合作伙伴:
Powered by - X2.5
Narkii Inc.Unity3D:界面插件NGUI的使用(二)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
24页免费6页免费16页免费6页¥2.0011页免费 8页免费21页免费4页1下载券17页1下载券1页免费
喜欢此文档的还喜欢24页免费61页1下载券47页1下载券26页免费13页免费
Unity3D:界面插件NGUI的使用(二)|U​n​i​t​yD​:​界​面​插​件​N​G​U​I​的​使​用​(​二​)
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢NGUI:Asset Store最火爆的UI插件
导语:NGUI是严格遵循KISS原则并用C#编写的Unity(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架。其代码简洁,多数类少于200行代码。这意味着程序员可以很容易地扩展NGUI的功能或调节已有功能。对所有其他用户而言,这意味着更高的性能、更低的学习难度和更加有趣。
完全集成到Inspector面板中。
不需要点击Play按钮就能查看结果。
在场景视图中看到的就是在游戏视图中得到的(所见即所得)。
组件、模块化的特性:要让你的界面控件做什么,只需为其附加相应的行为,而不需要编码。
全面支持iOS/Android和Flash。
灵活的事件系统。
可以让复杂的UIs只占用一个draw call。
可以直接在编辑器中创建、更新/修改纹理地图集,或从Texture Packer程序导入纹理地图集。
支持光照贴图、法线贴图、折射等特性,让你尽情发挥创造力!
支持硬边或柔性的面板裁剪。
支持灵活尺寸的表格,能够自动对控件进行排列。
通过IME输入法支持东方语言(有Web版本的演示程序)
内建本地化系统。
内建的键盘和摇杆支持。
提供大量有用的辅助脚本,从改变按钮颜色到拖拽对象。
简单的内建补间动画系统。
简洁和高度优化的C#代码。
没有DLL,也不依赖于其他外部资源。
1.下载一个NGUI插件 打开unity,右键Import Package在弹出的对话框选择下载好的NGUI插件点击打开 加载插件加载完成后,按F5或者选择刷新面板,
然后在主菜单可以看见多了一个NGUI选择项删除项目默认的相机,然后选择NGUI创建一个新的UI......[]
今天研究了一下NGUI的字体制作,网上教程很多。我自己也实现了,不想把遗忘掉,所以便花点时间写了出来,方便以后自己的回顾,也可以为新手提供一些教程。好的,言归正传。
Step 1:新建一个工程,导入NGUI包,我用的是最新的NGUI2.6.3......[]
Unity3D插件NGUI可以比较方便的实现屏幕自适应,以下是比较方便的实现方法。
  主要组件:
1. UIAnchor:用来确定控件在屏幕中的位置
2. UIStretch:用来做缩放的组件。老版本的NGUI是集成在UIAnchor上的。新版本的UIStretch提供了4种缩放方式......[]
步骤1-Scene
1.创建一个新的场景(New Scene)。
2.选择并删除场景里的MainCamera。
3.在NGUI菜单下选择Create a New UI,会打开UI创建向导。4.在创建向导中你能更改UI的基本参数。现在我们选Default layer,点击Create Your UI 按钮......[]
自己NGUI里面的camera里面如果没有audio listener和audio source的话你自己要添加!否则button音效播不了。控制ProgressBar的大小时,用sliderValue,因为inirialValue不行!1.在panel中添加一个Button和一个ProgressBar......[]
NGUI 自带了类似于输入框,I1.Background,Sprite,背景;2.Lable,字体;UILable. bool Password,true为密码输入类型,自动显示“*”。字体库必须得包含“*”;原理如上:UIInput.cs 下 bool isPassword,设置为true。即可实现功能需求;......[]
原本只是想用Unity自带的GUI功能实现魔兽世界的小地图效果,结果折腾了一个晚上。原来的思路如下:根据玩家坐标,计算出应显示的地图缩略图部分(128×128);用GUI遮罩将非白色的部分剔除(这样可以实现任意形状的小地图);将地图框叠加到第二步中的纹理上......[]
步骤:1.安装bmfont,然后打开bmfont,选择options菜单->F2.选择“微软雅黑”(注意不是“@微软雅黑”,没有“@”符号,否则之后导出的字体是横向的),unicode编码;ok,请看界面最下面一栏29180个字符!显然太多了......[]
首先添加一个Simple Texture用来当做幻灯片的对象。新建一个材质,着色器选择如图在Simple Texture上选择我们刚刚建立的材质,最后上代码......[]
A:嗯,简单来说就是节省内存的占用,不用把全部资源一次性都读到内存中去,而是需要的时候再读取,尤其在内存有限的移动平台,比如手机上,能够动态加载资源对于提升运行效率还是影响很大的。
A:一般在NGUI中图片用UISpirit,UISpirit有个参数是color的,可以获取到该图片的颜色,然后设置它的alpha值渐变为0。
A:如果字体是自己制作的,可以在制作字体的时候把字体的大小设置大一些。
A:直接在界面中多做几个Panel,每个Panel中放置一组UI,然后就可以根据需要动态激活或者关闭响应的Panel,切换也可以像NGUI例子中的移动切换一样,或者是缩放,任何方式都可以实现。
A:如果更新了NGUI的图片,你可以把预制好的预制件拖到场景中更新一下,然后再重新替换原来的预制件,还有就是NGUI的图片更新的时候,有时可能不会自动更新,需要你手动更新一下。预制件在场景中如果你更改了其中的元素组件的话,会有可能丢失跟原来的预制件的关联,这时候就是相当于还原到原来的状态了。
A:bmfont本身不支持,需要插件.NGUI或者EZGUI都支持,系统字体的话,在系统的字体文件夹下找需要的,然后拷贝到Asset文件夹下面,就可以了
其余和使用默认的那个字体的方法完全一样。
A:确实有的NGUI版本导入的时候,有错误的,我以前也遇到过,换个版本就没问题了。
A:public UIL
声明,然后脚本给一个物体,直接把label拖上去,然后引用的 时候直接使用text.text = "中文";
这是label。
至于button你想问的是按钮的事件吗?
添加脚本buttonmessage,然后把写有事件的脚本拖给target,下面的function name填你的方法名。
A:关键是写Editor。把所有公共的图片资源单独提取出来。详细代码点击链接。
A:目前NGUI版本是2.6.3,NGUI下载地址请点击链接。
结束语:NGUI的使用方式与Unity的使用方式一样。使用Widget Tool可快速创建模板化的控件,或者从基本组件创建你自己的控件。可以按照你的意愿拷贝/粘贴,把你的窗口保存为prefabs。所有一切只需简单地点击操作即可完成。当需要编写代码让控件移动时,可以选择简单的例子代码,可以把你的控件转变为按钮、输入框、基于事件改变颜色、播放声音、触发动画等等。

我要回帖

更多关于 quality control 的文章

 

随机推荐