[Unity3D]Unity3D游戏开发之继续探索NGUI

大家好,我是秦元培。欢迎大家关注我的博客。我的博客地址是blog.csdn.net/qinyuanpei

博主近期開始研究NGUI了,但是说实话,博主感觉NGUI的东西似乎有些分散,由于网上大部分的资料都仅仅是简单地解说怎样使用NGUI,并没有从实质性的原理出发来解说NGUI的内涵,这就和我们学习.NET仅仅会拖控件是一样的。并不能把握事物内在的东西。所以,博主推荐大家从官方提供的样例入手研究NGUI。博主这几天基本上都在看NGUI的演示样例程序,自我感觉内容比較杂吧。在今天的文章中,博主将讲述以下几个问题:

1、NGUI锚点控制

2、Unity3D场景与NGUI混合使用

3、Unity3D模型贴图丢失问题解决方式

以下開始今天的内容,我们来详细解说:

一、NGUI锚点控制

在NGUI中界面依照以下的图被分为9个区域,各自是上、下、左、右、左上、左下、右上、右下、中间。它在NGUI中被称为锚点。

通过锚点控制界面布局有什么优点呢?优点就在于我们能够将同一个区域内的控件依照一种方式来管理,这样能够简化我们的管理。

试想假设每个控件都使用绝对坐标来控制,那将是多么复杂的一件事情啊,通过NGUI提供的锚点功能。我们能够在各个锚点内使用相对坐标来确定控件在该区域内的位置。好了,以下我们就以这幅图为例来解说怎样使用NGUI的锚点功能。

首先我们利用NGUI提供的界面工具创建一个2D的界面。我们将Camera改名为2DUICamera,然后将其以下默认的Panel改名为2DUiPanel,并删除默认的Anchor节点。接下来,我们在该节点下创建一个空的游戏体,并使用Rest方法将它的Position、Rotation设置(0,0,0),这一步非常重要,即使后面须要改动其位置。

然后我们通过NGUI->Attach->Anchor为其加入一个UiAnchor使其成为一个锚点。并改名为Bottom_Anchor,这意味着我们将在该节点下布局屏幕底部要显示的内容,所以我们须要将该节点对象绑定的UIAnchor脚本中的Side设置为Bottom,如图:

我们设置Anchor_Bottom的坐标为(0,-240,0),这里的參数值视项目而定。

接下来,我们在其以下加入一个空的物体。改名为Anchor_Offset,从名称就能够看出。这是一个用于控制该区域内子控件偏移量的物体,我们将其位置设为(0,40,0),使其相对于该区域原点向上偏移40.接下来,我们在该节点下,加入一个Button。设置Label值为Bottom。

相似地。我们分别为剩下的8个区域建立锚点。建立的方法和上面同样,并且都是对称的。这里就不再多说了。通过这个样例就是想告诉大家在使用NGUI的时候。应该使用锚点来合理的管理游戏中的界面元素。这样便于我们更好的管理界面。终于的效果就是開始展示的那张图片。这里就不再展示了。

二、Unity3D场景与NGUI混合使用

Unity3D游戏场景分为2D和3D,我们来分别来讲它们和NGUI的混合使用。首先,对于2D界面来说。我们须要对默认的2DUi结构进行下改动,我们须要将Anchor和Camera放在同一层级中,即两者均属于2DUI的子节点。

其次,要设置2D界面的相机景深。该值要大于场景内主摄像机的景深值,其他的參数保持默认就可以。

如图所看到的,是博主在《[Unity3D]Unity3D游戏开发之跑酷游戏项目解说》这篇文章中利用NGUI来显示玩家的金币数目和奔跑距离的截图:

那么对于3D界面就显得十分简单了,由于在场景中仅仅有一个摄像机,所以我们能够直接依照平时的方法来做,但是NGUI的单位似乎和Unity的单位不同,在设置位置的时候。对于NGUI中的物体通常须要非常大的值才干移动到目标位置,眼下还没有搞清楚内在原因,等博主研究明确了会在文章后面补充的,只是依据宣雨松的博客这里确实须要一个数值上的转换,只是博主并没有研究清楚。以下是博主将NGUI和Unity3D的场景混合使用的效果,能够发现两者能够完美的执行在同一个场景中:

三、Unity3D模型贴图丢失问题解决方式

博主是一个研究代码的,设计类软件仅仅会Photoshop和CAD,所以对于模型什么的,基本上都不会。博主从网上下载了3DMax的模型,结果导出为FBX格式后在Unity3D中模型贴图丢失了。模型表面材质是Unity3D中默认的灰色材质。博主研究了好久始终没有找到原因。直到昨天晚上博主才找到了解决问题的方法,希望能够对大家有所帮助吧。

首先。我们打开3DMax。选中我们的模型—仙剑奇侠传四柳梦璃,如图:

接下来,我们选择渲染->查看图像文件,在新打开的对话框中定位到贴图目录中,一般在和该模型文件同级的Textures目录中。贴图格式为dds,这种格式在Unity中是不支持的。好,接下来,我们逐个选中贴图文件:

点击查看,打开贴图图片。点击第一个button保存贴图。

最后,我们回到Unity3D中。在模型所在的文件下建立一个Textures的目录,将刚才保存的贴图文件拷贝到该目录下。在Unity中导入模型后,会在模型目录下生成一个Materials的目录,我们在这个目录下能够看到模型相应的材质,选择一个材质:

当我们为全部材质设置为贴图后,在场景中就会看到我们熟悉的身影啦,只是怎么感觉和游戏里的人物差距那么大呢?

好了。感谢大家关注我的博客。今天总算在12点曾经能够完工了,大家晚安啊,哈哈。不要学我啊,我是被舍友逼得没办法才这种。

每日箴言:你的人生永远不会辜负你的。

那些转错的弯,那些走错的路。那些流下的泪水。那些滴下的汗水,那些留下的伤痕。全都让你成为独一无二的自己。

—— 朱学恒

喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei
   转载请注明出处,本文作者:秦元培。本文出处:http://blog.csdn.net/qinyuanpei/article/details/25654647

时间: 2024-12-19 11:45:07

[Unity3D]Unity3D游戏开发之继续探索NGUI的相关文章

关于《Unity3D/2D游戏开发从0到1》书籍再版说明

关于<Unity3D/2D游戏开发从0到1>第一版本在2015年7月1日全国发行,累计得到不少国内高校教师.培训机构的好评.但是由于Unity官方对于技术不断的升级与版本的快速迭代,基于Unity4.6版本的教学知识体系,则略显滞后.    随着2017年7月份,Unity2017.1正式版本的推出,<Unity3D/2D游戏开发从0到1>书籍的再版,则正式提上日程. 目前2017年8月份再版工作已经进行过半,现在给各位小伙伴汇报一下工作,希望得到更好的建议.现在说说第二版本的总体

《Unity3D/2D游戏开发从0到1》正式出版发行啦

书籍信息:   书籍的名称: <Unity3D/2D 游戏开发从0到1>   书号(ISBN): 978-7-121-26239-5    出版社: 电子工业出版社   发行时间:2015年7月1日 写作背景:    2015年6月30日我收到电子工业出版社张迪老师寄来,正式发行的<Unity3D/2D游戏开发从0到1>书籍.这本凝结着大半年心血的作品让我感慨万千.   本人从事游戏.软件与教学十多年,一直梦想可以进一步服务于全国广大的游戏与软件从业开发人员.14年下半年电子工业出

Unity3D 入门 游戏开发 Unity3D portal game development

Unity3D 入门 游戏开发 Unity3D portal game development 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:[email protected] E-mail: 313134555 @qq.com 视频学习链接:Video learning link: [教学视频]深入浅出Unity3D--第一篇-何韬-CSDN学院-在线学习教程 u3d 4.6 c#  性能上 比 java脚本 好一些 C # is better than a Java

《Unity3D/2D游戏开发从0到1》正式出版发行

去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息: 书籍的名称: <Unity3D/2D 游戏开发从0到1> 书号(ISBN): 978-7-121-26239-5 出版社: 电子工业出版社 发行时间:2015年7月1日 写作背景: 2015年6月30日我收到电子工业出版社张迪老师寄来,正式发行的<Unity3D/2D游戏开发从0到1>书籍.这本凝结着大半年心血的作品让我感慨万千. 本人从事游戏.软件与教学十多年,一直梦想可以进一步服务于

Unity3D ARPG游戏开发《最初的幻想》之第一张地图与跳跃的改善详解

前面我们终于实现了人物动画.相机控制及昼夜系统,现在继续吧,为了方便继续编写的敌人之类的脚本,所以打算今天先把第一张地图画个大概.结果,画了我好久的地图….. ≡(▔﹏▔)≡ 我对美术方面的天赋简直是惨不忍睹了…..加之地图中途画的差不多的时候Unity又崩溃了一次….忘了保存(ㄒoㄒ).于是又忙活半天….这个地图完全靠临时发挥了,第一张地图我画了好几次了,基本上每次画出来的地形之类的都完全不一样,所以就不多解释了,就上一张大概的场景图吧: 看起来好简单吧?唉……开启编辑器,这时侯如果在场景中转

Unity3D ARPG游戏开发《最初的幻想》之强化敌人AI,折腾的GUI

 昨天搞了死亡的完善与提示栏的工作.今天的话,首先再升级一下敌人的Ai吧.毕竟在玩家在敌人身后使劲攻击的话,这敌人也都不会有反应的,太不合理了. 打开Enemy脚本,在最前面"变量"标签中,先定义一个计数器,因为必须考虑到被同类"误伤"的情况: private int m_attackMeCount=0;//被一个同类对象攻击的次数 然后再在最下面的WaitForAttack函数中将自己的对象传入自己的攻击对象,以作判断: m_damageTarget.m_ch

Unity3D/2D游戏开发从0到1

这篇是计算机中Oracle类的优质预售推荐>>>><Unity3D/2D游戏开发从0到1> Unity3D/2D游戏开发从0到1(含DVD光盘1张) 采用 "案例化"教学思路, 以个人长期线下培训讲义为蓝本:讲解透彻.循序渐进.突出与优化游戏开发实战技巧:附有全国Unity游戏研发职位笔试面试真题集锦.Unity开发常见错误与分析.游戏开发职位简历模板 编辑推荐 按照"案例化"教学特点,全书贯穿两个重量级游戏的开发全过程讲解,让学

Unity3D ARPG游戏开发《最初的幻想》之GUI背包系统实现

昨天做了角色暴击…GUI浮动提示栏.现在的话,终于该继续前天被残忍打断的物品栏之类的GUI界面了! 首先还是把“属性”.“物品”.“技能”.“系统设置”几个按钮放上去罢. 我是这样设计的: 美工方面确实不是俺的长处,资源也都是用的DaikonGUI自带的. 新建一个Panel,用于盛放这几个按钮,Anchor设置为Right和Bottom即可. 然后再将这个Panel命名为“MyBottomBar”,在这个Panel中新建四个按钮,放上相应的图标即可.如果为了好看点,还可以设置Havor状态的显

Unity3D独立游戏开发日记(一):动态生成树木

目前写的独立游戏是一个沙盒类型的游戏.游戏DEMO视频如下: 提到沙盒类型的游戏,就有人给出了这样的定义: 游戏世界离现实世界越近,自由度.随机度越高才叫沙盒游戏.所谓自由度,就是你在游戏里想干啥就干啥,想开车就开车,想走路就走路.想盖房子就盖房子,没有城管来找你麻烦.那么随机度,就是每天发生的事情不能一样,做的任务也不会就一条线路可走. 在我的沙盒游戏里,地形上的树木,岩石等都是随机生成的,这样不同的人玩的地图都会不一样.当然如果最后能做到地形也随机生成那就更完美了. 下面我就讲下树木随机生成