新書推薦:
《
明式家具三十年经眼录
》
售價:HK$
524.2
《
敦煌写本文献学(增订本)
》
售價:HK$
221.8
《
耕读史
》
售價:HK$
109.8
《
地理计算与R语言 [英] 罗宾·洛夫莱斯 [德]雅纳·蒙乔 [波兰] 雅库布·诺沃萨德
》
售價:HK$
121.0
《
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
》
售價:HK$
87.4
《
大思维:哥伦比亚商学院六步创新思维模型
》
售價:HK$
72.8
《
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:HK$
155.7
《
UE5虚幻引擎必修课(视频教学版)
》
售價:HK$
110.9
|
編輯推薦: |
随着新时代的到来,Unity技术也取得了长足的进步,并针对Unity项目提供了全新的UI改进系统,其开源特征使得每一名开发人员均可访问UI的内部流程。时不我待,本书将引领读者探索全新的UI世界!
|
內容簡介: |
本书详细阐述了与Unity UI设计相关的基本解决方案,主要包括Unity中的构造布局、UnityEvent系统、控制行为、锚定系统、屏幕空间、世界空间和相机,以及与UI源代码协同工作等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
|
目錄:
|
第1章回顾与展望1
1.1 发展状况1
1.2 通用控件特性17
1.2.1 分组控件18
1.2.2 命名控件18
1.2.3 获取焦点19
1.2.4 工具提示21
1.2.5 Window控件22
1.3 GUI样式和皮肤25
1.4 GUI事件和属性29
1.5 布局控件30
1.5.1 BeginArea31
1.5.2 水平和垂直布局组件31
1.6 Asset Store31
1.7 重新设计系统32
1.8 新的布局方案33
1.8.1 Rect Transform控件33
1.8.2 Canvas控件34
1.8.3 布局组件34
1.8.4 遮挡机制35
1.9 新控件36
1.10 新UnityEvent系统37
1.11 控件的扩展性37
1.12 动画效果38
1.13 Asset Store中的资源38
1.14 MenuPage39
1.15 本章小结39
第2章 构造布局41
2.1RectTransform41
2.1.1Rect工具41
2.1.2RectTransform组件42
2.1.3 缩放Rect Transform45
2.1.4 Canvas45
2.2 自动布局和选项50
2.2.1 Horizontal Layout Group51
2.2.2 Vertical Layout Group53
2.2.3 Grid Layout Group54
2.2.4 布局选项57
2.3 分辨率和缩放行为69
2.3.1 Constant Pixel Size69
2.3.2 Scale with Screen Size70
2.3.3 Constant Physical Size71
2.4 UnityEvent系统72
2.4.1 光线投射机制72
2.4.2 输入模块73
2.4.3 输入事件74
2.4.4 事件触发器76
2.5 本章小结77
第3章控制行为78
3.1 概述78
3.1.1 添加代码79
3.1.2 构建项目79
3.1.3 内建图像中的警告消息79
3.2 文本处理80
3.2.1 简单的FPS控件83
3.2.2 添加输入交互行为85
3.2.3 阴影效果87
3.3 显示图像88
3.3.1 图像类型90
3.3.2 向混合结果中添加动画94
3.3.3 RawImage上的单词98
3.4 按钮控件98
3.4.1 选择操作100
3.4.2 事件处理103
3.4.3 最终的菜单效果106
3.5 行进方向109
3.5.1 分组选项111
3.5.2 动态事件属性112
3.6 滑块操作113
3.7 滚动栏115
3.8 导航118
3.9 着色器简介121
3.10 本章小结121
第4章 锚定系统122
4.1设置锚点122
4.2 设置和调整124
4.3 拉伸和变形127
4.4 缩放操作和分辨率132
4.4.1 与默认的常量值协同工作132
4.4.2 缩放视图134
4.4.3 获取物理尺寸136
4.4.4 选取最终方案140
4.5 本章小结141
第5章屏幕空间、世界空间和相机142
5.1 Canvas和相机142
5.1.1 屏幕空间和世界空间142
5.1.2 渲染相机144
5.1.3 事件相机145
5.2 透视145
5.3 构建游戏147
5.3.1 前提条件148
5.3.2 2D精灵对象148
5.4 屏幕空间相机的状态栏150
5.4.1 Canvas中的内容151
5.4.2 死亡状态152
5.4.3 相机设置156
5.4.4 添加深度效果157
5.5 进一步讨论158
5.5.1 定位Canvas159
5.5.2 效果示例160
5.5.3 构建UI并将其置于场景中160
5.5.4 缩放问题163
5.5.5 较好的方案163
5.5.6 Event Cameras的最后几点说明165
5.6 本章小结165
第6章与UI源代码协同工作167
6.1 了解EventSystem167
6.1.1 事件系统循环168
6.1.2 状态控制169
6.1.3 光线投射编组169
6.2 与事件协同工作170
6.2.1 使用参数173
6.2.2 内建事件接口175
6.2.3 执行事件176
6.3 构建自定义句柄或事件179
6.3.1 自定义事件的数据结构180
6.3.2 自定义事件接口181
6.3.3 自定义事件静态容器181
6.3.4 处理自定义事件182
6.4 滚球示例184
6.4.1 Droid脚本186
6.4.2 警示压力板187
6.4.3 管理警示系统189
6.5 事件系统小结191
6.6 操作示例191
6.7 访问源代码192
6.7.1 代码库193
6.7.2 获取副本194
6.7.3 下载代码195
6.7.4 更新操作198
6.7.5 解决方案198
6.7.6 向项目中添加UI个人版本200
6.7.7 将调整结果置于Unity中202
6.8 本章小结203
附录A 3D示例场景205
|
內容試閱:
|
随着新时代的到来,Unity技术也取得了长足的进步,并针对Unity项目提供了全新的UI改进系统,其开源特征使得每一名开发人员均可访问UI的内部流程。这无疑是一项大胆的尝试,千呼万唤后全新的UI系统终于得以面世。其间,开发周期的延误以及不断的改进行为使得该系统的上市时间遥遥无期,开发人员只得使用现有的遗留GUI系统,或者付费使用相对高级的GUI系统(例如NGUI)。在经历了Beta版发布后的漫长等待后,新系统最终问世。该系统得到了全面的改善,尽管某些领域尚有所欠缺(毕竟系统仍处于开始阶段)。本书围绕这一新技术展开讨论,以便读者理解各组件的功能、整合方式以及应用方法,进而在项目中实现全新的UI内容。除了屏幕菜单及选项菜单之外,本书还将在3D游戏场景中创建各类UI元素。Unity不仅推出了新的UI系统,开发人员还可访问源并设计UI元素、理解事物的构建方式、扩展现有的控制项,甚至创建自己的UI内容。具有冒险精神的读者,还可向Unity发布补丁或新特性,对Unity加以改进。据此,读者可组织设计内容及实现方式。更为重要的是,Unity对这一切提供了免费的使用权限。时不我待,本书将引领读者探索全新的UI世界。
第1章 回顾与展望 最新的Unity UI系统经过开发人员多年研发方得以面世(开发过程受到了预算紧缩的考验),其中包含了诸多最新特性并以免费方式提供给广大用户。
在讨论新系统之前,需要对遗留GUI系统(即旧系统,具有向后兼容之特性)予以回顾,进而在此基础上理解新系统的功能和应用,而传统教程还停留在遗留GUI阶段。
在读者理解了遗留系统后,本书将对新系统加以重点分析,这也是后续内容的主要工作。
本章主要涉及以下内容:
qUnity遗留GUI系统的回顾。
q与遗留GUI系统相关的建议、技巧和讲解。
q新系统特性概览。
购买Packt出版社书籍的读者可通过个人账号在http:www.packtpub.com处下载代码文件。另外,读者还可访问http:www.packtpub.comsupport,经注册后可通过邮件方式直接获得相关文件。除此之外,作者还提供了支持论坛,读者可直接向作者进行提问;另外,论坛中还包含了相关的注意事项,对应网址为http:bit.lyUnity3DUIEssentialsForums。
1.1 发 展 状 况 Unity的遗留GUI系统历经多年发展添加了诸多新特性,并对性能问题有所改善。考虑到在原始实现基础上得以完成,因而系统包含了某些限制条件,且需要向后兼容(类似于Windows操作系统,时至今日,该系统仍然需要服务于采用BASIC语言编写的程序。关于BASIC语言,读者可访问http:en.wikipedia.orgwikiBASIC)。这里并非认为遗留系统一无是处,与Unity 4.x和Unity 5.x相比,该系统在新特性方面有所欠缺。在新系统中,采用了更为高级的设计方案以及全新的核心内容。
遗留系统中的主要缺陷在于,该系统仅在3D元素之上的屏幕空间内进行绘制(而非其内部)。对于菜单或标题中的覆盖图,这并无太大问题;而在3D场景中,其整合方式将变得较为困难。
关于世界空间和屏幕空间的更多内容,读者可参考Unity Answers,对应网址为http:answers.unity3d.comquestions256817about-world-space-and-local-space.html。
因此,在讲述新系统的优点之前,首先需要考查该系统的根源(如果读者对遗留系统较为熟悉,则可忽略本节内容)。
本书将遗留GUI简称为GUI。相应地,当讨论新系统时,该系统则称作UI或Unity UI。用户在阅读时不可将其混为一谈。
另外,读者在Web或论坛中可能还会遇到uGUI这一类术语,该术语表示Unity UI新系统的研发代码。
GUI控件相关介绍如下。
遗留系统空间针对标题应用提供了基本的风格化控制。
遗留系统中的全部控件均采用内建的OnGUI方法,并在GUI渲染阶段进行绘制。在相关示例中,全部控件实例位于Assets\BasicGUI.cs脚本中。
针对功能性GUI空间,场景中的相机须于其上绑定GUILayer组件。默认条件下,该组件位于场景中的Camera对象上,且多数情况下用户不会对其有所察觉。若将其移除,则GUI工作时需要再次将其加入。
针对OnGUI委托处理程序,该组件可视为钩子程序,以确保其在每帧内被调用。
类似于脚本中的Update方法,如果渲染操作降低了运行速度,OnGUI方法将在每帧内多次被调用。当构建自己的遗留GUI脚本时,用户应对此引起足够的重视。
原GUI中的控件包含以下内容:
q标签
q纹理
q按钮
q文本框(包括单行文本框、多行文本框及密码文本框等)
q列表框
q工具栏
q滑块
q滚动条
q窗口
下面将对此进行逐一考查。
对于GUI脚本中的示例项目,全部代码均位于下载代码中的Assets\Scripts文件夹中。
当读者对此进行尝试时,须创建新项目、场景以及脚本,针对脚本中的各个控件设置代码,最后还需将该脚本绑定至相机对象上(将其从项目视图拖曳至场景层次结构中的Main Camera GameObject中)。随后,可运行该项目,或者利用[ExecuteInEditMode]属性修饰当前类,进而在游戏视图中对其进行查看。
|
|