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