1 / 40
文档名称:

第1章 回顾与展望.doc

格式:doc   大小:703KB   页数:40页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第1章 回顾与展望.doc

上传人:1017848967 2020/2/11 文件大小:703 KB

下载得到文件列表

第1章 回顾与展望.doc

文档介绍

文档介绍:第1章回顾与展望最新的UnityUI系统经过开发人员多年研发方得以面世(开发过程受到了预算紧缩的考验),其中包含了诸多最新特性并以免费方式提供给广大用户。在讨论新系统之前,需要对遗留GUI系统(即旧系统,具有向后兼容之特性)予以回顾,进而在此基础上理解新系统的功能和应用,而传统教程还停留在遗留GUI阶段。在读者理解了遗留系统后,本书将对新系统加以重点分析,这也是后续内容的主要工作。本章主要涉及以下内容:Unity遗留GUI系统的回顾。与遗留GUI系统相关的建议、技巧和讲解。新系统特性概览。购买Packt出版社书籍的读者可通过个人账号在。另外,读者还可访问,经注册后可通过邮件方式直接获得相关文件。除此之外,作者还提供了支持论坛,读者可直接向作者进行提问;另外,论坛中还包含了相关的注意事项,对应网址为。,并对性能问题有所改善。考虑到在原始实现基础上得以完成,因而系统包含了某些限制条件,且需要向后兼容(类似于Windows操作系统,时至今日,该系统仍然需要服务于采用BASIC语言编写的程序。关于BASIC语言,读者可访问)。这里并非认为遗留系统一无是处,,该系统在新特性方面有所欠缺。在新系统中,采用了更为高级的设计方案以及全新的核心内容。遗留系统中的主要缺陷在于,该系统仅在3D元素之上的屏幕空间内进行绘制(而非其“内部”)。对于菜单或标题中的覆盖图,这并无太大问题;而在3D场景中,其整合方式将变得较为困难。关于世界空间和屏幕空间的更多内容,读者可参考UnityAnswers,对应网址为。因此,在讲述新系统的优点之前,首先需要考查该系统的根源(如果读者对遗留系统较为熟悉,则可忽略本节内容)。本书将遗留GUI简称为GUI。相应地,当讨论新系统时,该系统则称作UI或UnityUI。用户在阅读时不可将其混为一谈。另外,读者在Web或论坛中可能还会遇到uGUI这一类术语,该术语表示UnityUI新系统的研发代码。GUI控件相关介绍如下。遗留系统空间针对标题应用提供了基本的风格化控制。遗留系统中的全部控件均采用内建的OnGUI方法,并在GUI渲染阶段进行绘制。在相关示例中,全部控件实例位于Assets\脚本中。针对功能性GUI空间,场景中的相机须于其上绑定GUILayer组件。默认条件下,该组件位于场景中的Camera对象上,且多数情况下用户不会对其有所察觉。若将其移除,则GUI工作时需要再次将其加入。针对OnGUI委托处理程序,该组件可视为钩子程序,以确保其在每帧内被调用。类似于脚本中的Update方法,如果渲染操作降低了运行速度,OnGUI方法将在每帧内多次被调用。当构建自己的遗留GUI脚本时,用户应对此引起足够的重视。原GUI中的控件包含以下内容:标签纹理按钮文本框(包括单行文本框、多行文本框及密码文本框等)列表框工具栏滑块滚动条窗口下面将对此进行逐一考查。对于GUI脚本中的示例项目,全部代码均位于下载代码中的Assets\Scripts文件夹中。当读者对此进行尝试时,须创建新项目、场景以及脚本,针对脚本中的各个控件设置代码,最后还需将该脚本绑定至相机对象上(将其从项目视图拖曳至场景层次结构中的MainCameraGameObject中)。随后,可运行该项目,或者利用[ExecuteInEditMode]属性修饰当前类,进而在游戏视图中对其进行查看。,这一类控件提供了风格化的控制效果,并在屏幕上显示只读文本。脚本中一般会包含下列方法:voidOnGUI(){(newRect(25,15,100,30),"Label");}这将生成如图1-1所示的屏幕显示效果。图1-1Label控件可通过guiTextGameObject属性()或GUIStyle(稍后将对此加以讨论)调整字体设置。当设置脚本中的时,可在脚本中使用下列代码,对应位置可位于Awake/Start函数中,或者绘制下一个文本段(采用另一种字体)之前。publicFontmyFont=newFont("arial");=myFont;另外,用户还可使用导入字体在Inspector中设置myFont属性。Label控件构成了全部控件的基础内容,同时,其他控件均继承自该控件,且针对显示文本的样式具有相同的行为。针对具体内容,Label还支持Texture的使用,但不支持文本和纹理的同时使用。对此,可使用Label控件和其他控件之间的图层操作,进而实现相同的效果(控件可通过调用顺序隐式地加以绘制),如下所示:publicTexture2DmyTexture;voidStart(){myTexture=newTexture