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

来源:互联网 发布:网络语言1是什么意思 编辑:程序博客网 时间:2024/05/22 17:36

       大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是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中是不支持的。好,接下来,我们逐个选中贴图文件:


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


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


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




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


       每日箴言:你的人生永远不会辜负你的。那些转错的弯,那些走错的路,那些流下的泪水,那些滴下的汗水,那些留下的伤痕,全都让你成为独一无二的自己。—— 朱学恒




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


6 0
原创粉丝点击