ngui怎么调整uiroot scale的camera

扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
[Unity3D]事半功倍:界面插件NGUI的使用教程与实例
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口unity3d ngui
3.0.5 官方最新版
unity3d ngui
软件介绍 Soft content
NGUI是严格遵循KISS原则并用C#编写的Unity(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架。程序员可以很容易地扩展NGUI的功能或调节已有功能。
ngui 怎么安装:
首先导入NGUI package,在unity工程窗口中点击右键选择&Importpackageàcustom package,选择你下载的NGUI插件,导入完成后效果如图:
unity3d ngui 教程:
1、选择菜单NGUIàOpen the UI Wizard,弹出创建UI对话框。点击Layer窗口右边对应的按钮,弹出层选择对话框,在这里我们选择AddLayer
新建Layer窗口中,我们新建一个叫NGUI的Layer,添加Layer之后
再次回到UITool窗口,更改界面Layer为NGUI
2、在下面的Camera选项中有None,Simple2D,Advanced3d选项,分别用于创建不带camera的界面(这里如果已经有一个UI界面,我们只是想添加一个新的界面,可以选择这个),简单的2D界面(此选项没有Z轴效果),高级3D界面(此选项下的界面有Z轴效果,并且可以3D旋转,以此选项创建的UI有自适应分辨率的功能)。
在这里我们先创建一个Simple2D界面,选择好之后点击下面的Create Your UI按钮,创建一个UI。程序会自动为我们创建一个有节点层级关系的一些物体,如图,分别是UI根节点,,一个相机节点,一个锚点节点,和一个用于盛放按 钮等UI的Panel节点我们现在可以不用管这些节点的功能和作用,只要记住Panel节点即可,以后我们创建的所有按钮等UI都放在Panel层级下。
3、创建UI元素,选择菜单NGUIàOpen the Widget Wizard,弹出创建UI元素对话框
4、首先是Atlas窗口,Atlas就是一个大的图片,里面用于存放我们需要用到的各种图标。在后面我们将讲解怎么创建自己的Atlas,Font是我们创建UI时用到的字体,Template可以允许我们选择要创建的UI类型,包括Label,Spirit等等,如图
5、我们可以使用NGUI自带的一些Atlas,如图是NGUI自带的一些Atlas,其中带有Font字样的是字体Atlas。
6、这里Atlas我选择Fantasy Atlas,Font选择Fantasy Atlas CFont Normal,在项目窗口中选择Fantasy Atlas拖到Atlas中,选择Fantasy Atlas CFontNormal,拖放到Font中,
7、在Template中,我们选择 Spirit,Spirit选项让我们选择需要创建的图标,这里我们选择smooth,Pivot默认的center ,然后确保AddTo右边的选项是我们要添加到的Panel中,如果不是,我们可以在Inspector中点击选中panel,NGUI会自动为我们切 换。最后点击AddTo,NGUI会在Panel节点下创建一个名称为Sprite (Smooth)的spirit。属性窗口如图:
2、 这里的atlas,Spirit,Pivot都是刚才创建的时候已经选择好的,如果不满意可以在这里修改。
Depth可以控制我们的图标向前或者向后偏移,例如如果我们想要某个图标在另一个图标的上方,我们可以把它的Depth设置更大。
Correction主要用于修正因图标像素是奇数而出现的问题。
Color Tint可以在图标颜色的基础上为图标着色,
Clipboard是剪贴版的颜色,当我们选择一个Cilpboard颜色后,点击Paste可以将颜色粘贴到ColorTint的颜色上。
Spirit Type表示要创建的Spirit平铺方式,包括Simple,Sliced,Tiled,Filled。如果图标较小,我们需要平铺很大,但是又不想看出重复,可以选择sliced。
这里我们选择sliced,Fillcenter选择默认。然后修改Spirit的缩放值。我们可以选择不同的SlicedType查看不同选项的效果。如图所示:
其中前三种选项大致一样,只有第四种Filled选项下又包括Fill Dir(填充方向),FillAmount(填充量),Invert Fill(反转填充)三个选项,这三个主要用于修改填充为360旋转填充,水平,垂直填充等,大家可以自己试验一下效果。
unity3d ngui 怎么用?
一:创建你的界面1.创建一个新场景.2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a New UI,会打开UI创建向导.4.在创建向导中你能更改UI的基本参数,现在我们选Default layer.点击Create Your UI 按钮.5.就这样,你的UI创建好了.如果在一个已存在NGUI的项目中你要跳过第二步,并且你要选择一个不同的UI层,你还要确保非GUI相机不渲染UI层.在做具体UI控件之前,我们看看UI向导为我们做了什么.1.在2D的根对象上有个UIRoot脚本.这个脚本会重新调整游戏对象符合你的屏幕高度,有自动和手动选择高度.2.Camera对象包含Camera和UICamera脚本.UICamera脚本包含NGUI的时间系统.3.Anchor包含UIAnchor脚本.虽然这个脚本可以附加给控件,但在这里可以避免Windows机器上半个像素偏移的问题.4.Panel对象有UIPanel脚本呢,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化,以减少DrawCall.同样你可能还注意到目前自动帮你选中了Panel对象,也就是说下面添加的所有部件都将在作为它的子对象.
二:精灵Sprite现在让我们添加一些控件,在NGUI菜单中选择Create a Widget.这个向导会指导你建立一些基本的控件.需要选择所实用的Atlas和字体,因为是新建的项目,所有按下Atlas和Font按钮没有效果,相反会自动复制为你最近使用的元素.我们这里先选择Atlas为SciFi Atlas,字体为SciFi Font-Normal.接下来在Template选择创建什么类型的控件.这个的模板只是帮助你开始创建,当你真正使用NGUI的时候.你会经常用这个向导创建控件的基本体.现在,让我们创建第一个控件.1.假设我们Atlas选择的是SciFi Atlas,我们给Sprite选择Dark.2.点击Add To按钮,(如果按钮是灰色的,那是因为你没有选择Atlas).3.你的Sprite现在已经创建并选中了.不过它非常小,让我们用Transform来调整它符合我们的需要.一个值得注意的事是同一个atlas中创建控件不会响应Z轴变换,不过你可以调整Depth参数来调整他们的前后次序.如果后面你用了多个atlase或者多个UI面板,那么你就可以去调整Z轴变换.你可以尝试添加更多的控件,比如加入一个Sliced Sprite(一个含有9个切片的Sprite,创建固定边框的控件最佳选择),一个Tiled Sprite(一个Sprite缩放填充整个区域)和Filled Sprite(每个Sprite都会有一个单独的参数来控制那些是可见的,常被用来做进度条或者滚动条).如果你找不到它们也没关系,后面的教程将讲解它们.
三:9-Slicing Sprite1.选择Panel对象,用控件向导添加一个"Drak"的Sliced Sprite.什么叫9-slicing?查看这里:http://www..com/designcenter/video_workshop/html/vid0204.html2.调整缩放为(500,500,1).3.添加另外一个Sliced Sprite并设置缩放为(500,40,1).4.更改第二个sprite的位置到(0,230,0).5.更改Sprite的Dark为Light.6.向下图一样调整两个sprite的颜色.7.调整Depth,让彩色的sprite在大的sprite前面.现在看起来像个小窗口了.
四:拼贴精灵1.选择Panel对象,添加Tiled Sprite,并选择Honeycomb sprite.2.设置它的位置为(0,-19,0)和缩放为(494,457,1).3.同样你要设置深度调整前后次序.可以按照自己的意愿调整它的颜色使他看起来更好.你可以在任何时候通过选择Panel对象中的Debug Info的Geometry项来查看创建的控件的几何网格.添加了这么多东西,目前依旧仅有一个Draw call.
五:标签1.像前面讲的一样方法选择Panel对象并添加一个Label控件.2.并点击Add To 按钮,如果Add To按钮不可用,是因为你没有指定字体,可以给Font栏指定"SciFi Font-Normal".3.在检视面板给刚添加的UILabel的Text项添加一些文本.比如Hello World!4.移动标签位置到(0,234,0),让它出现在标题栏上.可以添加多个Label并且使用16进制的值描述不同颜色.以[FF0000]开始,[-]结束,在这之间的文本都会变为红色.因为使用了相同的字体相同的材质,所有整个场景依旧是一个DrawCall.
六:按钮现在,你应该可以很容易的创建一个按钮了,但还不知道如何让它接受点击时间.不过这很简单,任何碰撞盒都会收到它应有的事件.所以,一个简单的按钮你只需要在NGUI下选择Attach a Collider给控件,另外NGUI的模板已经有按钮末班,让我们看看.我们选择Panel,用向导创建一个Button.你能看到按钮有多个部分,一个是背景,一个是文本标签还有一些脚本,这就是NGUI的特性,多个小组件像乐高积木一样组合成强大的控件.1. UIButtonColor当鼠标悬停在按钮或者按下的颜色.2. UIButtonScale当鼠标悬停在按钮上时按钮放大.3. UIButtonOffset当按下按钮时按钮像右下的位移.4. UIButtonSound当按钮按下时播放声音.当然还有其他组件,比如UIButtonPlayAnimation 和 UIButtonMessage,你自己摸索喽.你也可以添加自定义事件让它处理更多的事件.现在,你应该做成这样的一个界面了.
七:滑块下面让我们添加一个滑块.1.用Widget Tool,选择Slider模板.2.给Foreground用Button,给Background用Dark.Thumb可以也用Button.3.选择Panel后点击Add To按钮.一个滑块滚动条就做好了.你可以选择滑块的游戏对象进行颜色和尺寸的调整,但是经验建议你不要去调整控件对象下面的子对象.你可以尝试再做一个垂直滑块.
八:复选框接下来我们来做复选框:1.点击蒙版用"X",背景用"Dark".2.创建一个复选框后再选择Panel对象创建一个新GameObject.3.添加更多的复选框到这个GameObject.4.在这些复选框上选择Option项.5.运行一下程序,点击复选框.看看效果.有关联的复选框只需要放在同一个父游戏对象中即可.还可以附件一些其他事件处理功能,如UICheckboxControlledComponent 和 UICheckboxControlledObject.可以用来由复选框状态来启用禁用指定的组件或者游戏对象.尝试着做3个复选框来控制红,绿,蓝三个控件的显隐.
九:输入框现在我们来创建一个输入框.任何文本标签通过添加碰撞盒盒UIInput脚本都可以变成输入框.不过这里我们也可以用Input模板来创建:1.正如你掌握的,用Widget Tool创建输入框.2.可以用"Dark"或"Highlight"作为背景.3.将它调试正确.播放游戏,点击输入框就可以直接输入文字,在iOS和Android设备上则会自动显示屏幕键盘.这个输入框同样也支持Unity3.4.1新增的输入法类,让你能输入中文.目前唯一不支持Flash平台,因为Unity Flash还没增加IME输入支持.
十:三维界面上面的我们一直在做2D的界面,但我们也可以很容易的让它变成3D界面.继续跟着我做吧:1.将Panel从Anchor的子物体中解除掉,由UI Root作为它的父对象.2.删除Anchor(本教程我们只做静止的UI).3.将摄影机改成透视投影.4.将相机的Near改为0.1和Far改为4.0.5.将相机往后移动一点,大概在(0,0,-550)的位置.6.给Panel一点角度,我们这里设置旋转为(0,345,0).7.另外一个霸气的东西就是添加PanWithMouse到Camera.点击Play,试着移动鼠标.看发生了什么.如果你做的没错,你将会看到下面这样的窗口.
unity3d ngui 下载地址[]
* 推荐下载+解压;软件通过+++扫描,问题软件请
从评论反馈
* 本站已不再更新破解相关,若大意发布了相关破解,告知!保证永不再收录!
9.60MB/英文/4星
5.00MB/简体中文/3星
191KB/中文/3星
282.30MB/英文/3星
1.60MB/英文/3星借鉴文章地址:
& & & & & & & & & NGUI官网的:/forum/index.php?topic=6710
& & & & & & & & & & 引用他人的: /blog/1964679
NGUI版本:3.6.4b版本
& & & & & UIInspector框如下,Transform选项中的S中的X,Y,Z好像调整不了,而且跟随版本变化,也会变化
    参数解释:
& & & & & & & & Scaling&Style(缩放类型,包含三种)
        a.PixelPerfect:像素优先,表示以图片原大小进行渲染
& & & & & & & & & & & & & & & & & &&如果是PixelPerfect缩放类型,当屏幕的分辨率大于Maximum Height,则以Maximum Height 为基础缩放,
& & & & & & & & & & & & & & & & & & & & & & & & & 反之,如果屏幕分辨率小于Minimum Height 则以Minimum Height为基础进行缩放。
& & & & & & & & & & & & & & & & & & & & & & & & & 例如,如果屏幕高度为1000,而设置的Maximum Height值为800,则UI界面整体放大为原来的.25倍。
                      PC端可以调节界面大小的会使用比较多
        b.FixedSize:修正尺寸,以相机的大小为基准进行缩放
        C.FixedSizeOnMobiles:在移动设备上修正尺寸,对当前图像进行缩放以适合所有移动设备
& & & & & & & & & & & & & & & & &&   &&Scaling Style指定为FixedSize或FixedSizeOnMobiles,则缩放只以Manual Height为参考,屏幕分辨率的高度值不同于此设置值时,
& & & & & & & & & & & & & & & &        &  & &则根据其比例(即Screen Height / Manual Height)对整棵UI树的进行&等比&缩放(宽度的缩放比也是此比例值)
& & & & & & & & & & & & & & & & & &&         移动终端,屏幕变化比价大的使用比较多
      Minimum&Height&-&UI&Root的最小高度
      Maximun&Height&-&UI&Root的最大高度
      Shrink&Portrait&UI&-&缩放竖屏(当手机横屏转竖屏时,对进行缩放)
      Adjust&by&DPI&-&通过像素来适应
&1 &会根据屏幕的尺寸自动进行缩放,基于Scaling Style(缩放风格)选项的设置
Pre Tip 1:
      The UIRoot always scales itself by 2 / ScreenHeight, where ScreenHeight is either the actual screen height (in pixel perfect mode), or the manual height that you've specified (in fixed size mode).
& & & & & & & & &In doing so, the camera that draws the UI can remain at Orthographic Size of 1.(官网原话),一定要明白什么是Orthographic ,Perspective视图,然后就明白上面的话了
  & & & & & & &主要是为了确保你的GUI对像缩放倍数为&2/(Screen.height)会根据屏幕的尺寸进行自动缩放
Pre Tip 2:
& & & & & & &UIRoot Script脚本代码官方API解释
     &This is a script used to keep the game object scaled to 2/(Screen.height). If you use it, be sure to NOT use&&at the same time
Pre Tip 3:
& & & & & & &UIRoot其实就做了一件事情:根据Screen.height和UIRoot.activeHeight的比例来调整UIRoot的loaclScal,从而保证UIWidget(UISprite,UILabel)可以按照其本身的大小进行设置,而不用经过复杂的换算过程
阅读(...) 评论()NGUI做pc端的屏幕自适应 - 泰斗社区
发表于 12-26
现在用unity做项目 90%都是用NGUI,NGUI做pc端的屏幕自适应我个人觉得NGUI应该算是比较成熟的UI插件,虽然他也存在很多问题,但是至少这么多游戏都在用,它目前是能hold住的,嘿嘿。 这篇文章说说我现在是怎么自适应UI 和 3D 游戏的。。
1.获取屏幕的宽高
Screen.width
Screen.height 可以回去设备屏幕的宽高,但是它并不是NGUI的宽高。比如你想做一个全屏的UISprite 。
这样的代码是错误的。
sprite.width = Screen.
sprite.height =
Screen.height
正确的方法应该是:
UIRoot root = GameObject.FindObjectOfType&UIRoot&();
if (root != null) {
float s = (float)root.activeHeight / Screen.
int height =
Mathf.CeilToInt(Screen.height * s);
int width = Mathf.CeilToInt(Screen.width * s);
Debug.Log("height = " + height);
Debug.Log("width = " + width);
我建议在项目中你可以封装两个只读的方法来获取NGUI 的宽和高。
2.自适应NGUI屏幕
在Hierarchy视图中选择UI Root (2D)然后在Inspector视图中、
Scaling Style :如果是手机游戏的就选择FixedSizeOnMobiles,它的意思就是开启UI整体缩放的支持。
Manual Height:这个属性就比较重要的,因为我们的自适应屏幕,原理就是根据Screen.width 和Screen.height来动态的计算它的实际高度,动态的修改这个值。
Min/Max inum Height:这就是支持的最大高度,和最小高度一般都是 640 到 1536。
开始做UI的时候就需要定制游戏主版本的屏幕分辨率,我定的分辨率是960X640,所以我屏幕的实际高度是640 。那么在Manual Height的参数我就需要写640.
如下图所示,我在960X640的屏幕上布置了我的简单界面。
我举个典型的例子,这时候我把屏幕分辨率改成. 因为960X640 是3:2的屏幕,而:3的屏幕。所以屏幕就会变成那面这个样子。
然后,我们就需要来修改Manual Height这个参数,如果是的分辨率,那么此时它的Maunal Height应该是720。
我个人觉得根本就是没有完美自适应的方法。除非你可以接收屏幕上的某些元素被拉伸变形。。 如上图所示,在这里我们只需要把背景的白框拉伸成屏幕的宽高即可。
说了半天就是一个简单的数学算法,根据布置UI时的分辨率,加上现在屏幕的分辨率根据这两个参数,动态的计算出现在manualHeight的高度。
我在Unity圣典上已经看到有人写了这个算法。
找一个合适的地方调用一下如下方法。 960 /640换成你布置屏幕时的宽高即可。
static private void AdaptiveUI()
int ManualWidth = 960;
int ManualHeight = 640;
UIRoot uiRoot = GameObject.FindObjectOfType&UIRoot&();
if (uiRoot != null)
if (System.Convert.ToSingle(Screen.height) / Screen.width & System.Convert.ToSingle(ManualHeight) / ManualWidth)
uiRoot.manualHeight = Mathf.RoundToInt(System.Convert.ToSingle(ManualWidth) / Screen.width * Screen.height);
uiRoot.manualHeight = ManualH
UI整体布局 “居中” 并不是一个好的处理办法,这时候就需要策划人员的头脑风暴了,不过可以参考一下别的游戏自适应的方法。如果你的UI布局比较简单的话,比如战斗UI。一般都是4个角有东西,可以用Anchor把它固定在屏幕上。或者用新版本的NGUI提供的UIWidget也可以设置固定的位置。
3.3D方面的自适应
我们在说说3D方面的自适应,比如游戏里面的人物。。我举个例子,比如我们游戏是960X640屏幕,在屏幕的边缘放一个3D的角色,那么此时屏幕变成那么这个小人可能就跑到屏幕外面了。。解决这个问题就需要3D 摄像机的自适应。
如下图所示,我在960X640屏幕的边缘放了一个3D的立方体对象。
然后我把屏幕设置成。如下图所示,可以看到这个立方体对象以后超出了屏幕。。。
有一个非常俏巧妙的方法可以解决它。就是修改Camera的Field of View的参数,找一个合适的地方调用一下这个方法。这里我借助了刚刚自适应NGUI屏幕的参数。这里我用到了UIRoot的manualHeight ,所以UI需要你是用上面介绍的方法来自适应,640表示我制作时屏幕的高度,拥着两个数相除那么就可以得到Camera缩放的系数了。
static public float getCameraFOV(float currentFOV)
UIRoot root = GameObject.FindObjectOfType&UIRoot&();
float scale =Convert.ToSingle(root.manualHeight / 640f);
return currentFOV *
找一个合适的地方调用,60表示默认的参数,getCameraFOV这个方法的原理就是根据默认的FOV参数加上当前屏幕的系数以及布置屏幕时的系数,动态计算出一个新的FieldOfView。
Camera.main.fieldOfView = getCameraFOV(60);
说到这里其实修改射线机的Z轴也可以达到自适应的效果,但是我觉得最好用fieldofView,因为游戏中你的摄像机可能位置会发生变化,总不能一直去改Z轴的属性吧,而FiewldOfView你只需要设置一次就可以了。嘿嘿。
4.拉伸变形
你可以让所有的摄像机在初始化的时候调用一下这个方法,它会完完整整的拉伸屏幕 ,大家可以试试,不过千万不要用,因为变形了太难看。。。。
foreach(Camera camera in Camera.allCameras)
camera.aspect
= 640f/960f;
你还没有登录,请先或!
(大小不能超过2MB,文件类型支持png ,jpg ,gif ,doc ,xls ,txt ,rar ,zip .)posts - 301, comments - 0, trackbacks - 0, articles - 0
NGUI官网示例11 –D Drop(图标与物体拖拽放置)游戏中经常会用到储物箱等GUI,GUI的一边是物品的图标,另一边是一个角色,你可以拖动这些图标放置到角色上,为它装配装备。那么我们首先来实现较为简单的DDrop功能。如图所示:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_2582fcc08df8dc7.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_2582fcc08df8dc7.png">&首先来制作三维的场景:1. & & & & 使用Create a new UI对话框创建一个Advanced3D UI,如图所示:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_524eadc.png');" border=0 alt=请输入描述 src="/forum/attachment/Mon_7_524eadc.png">把Panel拖出来,脱离Anchor父物体,然后改名为3D,接着把Camera作为子物体拖动到Panel下面,reset一下Camera对象,最后删除UI Root(3D)对象和Anchor对象,这里删除UIRoot是因为这个对象只是用于调整GUI大小的,而我们这个层级只要显示一个立方体和一个背景而已,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_0dc483d3eec7092.png');" border=0 alt=请输入描述 src="/forum/attachment/Mon_7_0dc483d3eec7092.png">选择Camera,使用WidgetTool对话框在Camera下创建一个SlicedSprite对象,调整其大小和位置,作为其背景,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_ca82aefe7803a01.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_ca82aefe7803a01.png">创建一个空的游戏对象,并命名为stage,该对象用来使得其子物体能够自动旋转,把该游戏对象放置到3D对象下,成为其子物体,并reset一下,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_25eb6c2605bbcc7.png');" border=0 alt=请输入描述 src="/forum/attachment/Mon_7_25eb6c2605bbcc7.png">在stage下创建一个Cube,并为该Cube赋予一个brick材质,在project窗中,打开NGUI-& Example-&brick。并调整它的大小,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_bac6141.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_bac6141.png">选择stage对象,调整它的位置,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_7bb.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_7bb.png">再次选择stage对象,为它添加一个spin组件(Component-&NUI-&Example-&spin),这个组件可以旋转自身,并设置其参数,点击播放,可以看到立方体旋转起来了。当然这里大家应该知道,子物体会继承父物体的所有变换(平移、缩放和旋转)。如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_2acf8b90b0993b2.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_2acf8b90b0993b2.png">选择cube对象,为其添加一个SpinWithMouse组件(Component-&NGUI-&Example-&Spin With Mouse),该组件可以使得物体随着鼠标的拖动而转动,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_7a56e389e926905.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_7a56e389e926905.png">在3D对象下创建一个Direction Light,这样就把场景照亮了,这样场景就漂亮多了,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_e581a.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_e581a.png">接下来,我们来制作GUI部分。使用Create a new UI对话框,创建一个Simple 2D,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_2b6072331fdb6ba.png');" border=0 alt=请输入描述 src="/forum/attachment/Mon_7_2b6072331fdb6ba.png">把Anchor对象改名为Anchor Bottom,并设置其side参数为Bottom。如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_975a69819adc7ed.png');" border=0 alt=请输入描述 src="/forum/attachment/Mon_7_975a69819adc7ed.png">选择Panel,改名为Window Panel,使用WidgetTool创建一个SlicedSprite,设置参数,并把该元件改名为background,并调整它的大小和位置,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_0df76a8be98ab4c.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_0df76a8be98ab4c.png">现在看到视口中间还有一个正方形,这个东西是我们上面那个3D对象层级的背景,我们选择UIRoot(2D)对象包括其子对象,为其添加一个2DGUI layer(如何添加Layer和Layer的作用在unity文档中有描述,这里不再赘述)。选择UIRoot(2D)中的Camera,设置其Culling Mask为2DGUI,也就是说这个摄像机只显示这个Layer中的对象,其他Layer的对象不会在这个摄像机中显示。最后效果如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_3f51ab.png');" border=0 alt=请输入描述 src="/forum/attachment/thumb/Mon_7_3f51ab.png">选择WindowPanel,为其添加一个新的Panel(NGUI-&create a Panel),并重新命名为ListPanel,如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_b3f5b25ec721400.png');" border=0 alt=请输入描述 src="/forum/attachment/Mon_7_b3f5b25ec721400.png">为ListPanel创建一个空的游戏对象,并命名为DragDropContainer,reset一下,并为它添加一个Collider(NGUI-&Attach a collider),如图所示726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" class=J_post_img title=点击查看原图 onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_7_b3f5b25ec721400.png');" border=0 alt=请输入描述 src="/forum/attachment/Mon_7_b3f5b25ec721400.png">
随笔分类(259)
随笔档案(301)
积分与排名}

我要回帖

更多关于 ngui uiroot 的文章

更多推荐

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

点击添加站长微信