




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着互联网高新技术的发展,越来越多便民利民的软件与程序被开发出来,上到国家军事,下到居家旅行,计算机的技术已经渗透入我们生活中的每个角落,于此同时每年都会一大批高考生需要在网上找到自己心仪的学校,网络的的发展注定了信息量的爆炸迸发,各种各样的无用信息也会浮现出来。毕业生们在这么多繁杂的信息里很难有效的获取到自己想要了解的信息。而此时市场上需要的是一款能够更好统合这些信息的软件来让学生或者家长们了解详情,而我们基于unity3D开发工具的3D校园就应运而生,使用C#脚本语言开发和实现人机交互的过程,能够让用户更加有代入感同时还能了解本校的历史与外观以及其他等。本研究项目的实现是基于unity3D开发工具,开发语言是C#编程语言,以3Dmax建模软件为设计,使用Photoshop进行项目UI设计。本项目的工作流程为:对于项目制作的初期的规划和设计、项目所需物件的建模与设计、unity内的场景搭建。□□关键词:3D校园Unity3d人机交互3Dmax AbstractWiththedevelopmentoftheInternetofnewandhightechnology,moreandmorewiththeconvenienceandbenefitofthesoftwareprogramisdeveloped,ontothenationalmilitary,downtothetravelthatoccupythehome,thecomputertechnologyhaspenetratedintoeverycornerofourlife,atthesametimeeveryyearalargenumberofstudentsneedtofindtheirlovedonesonlineschools,theexplosionofthenetworktothedevelopmentoftheinformationexplosion,allkindsofuselessinformationwillemerge.Itisdifficultforgraduatestoeffectivelyobtaintheinformationtheywanttoknowinsomanymultifariousinformation.Atatimewhenthemarketneedisabetterintegrationoftheinformationsoftwaretomakestudentsortheirparentsfordetails,andwearebasedonunity3Ddevelopmenttool3dcampuswasborn,usingc#scriptlanguagetodevelopandimplementprocessofhuman-computerinteraction,canlettheusermorehavethesenseatthesametimealsocanunderstandthehistoryoftheschoolandappearanceaswellasotheretc.Theimplementationofthisresearchprojectisbasedontheunity3Ddevelopmenttool,thedevelopmentlanguageisC#programminglanguage,the3Dmaxmodelingsoftwareasthedesign,usingPhotoshoptocarryouttheUIdesignoftheproject.Theworkflowofthisprojectis:theinitialplanninganddesignoftheproject,themodelinganddesignoftheobjectsneededfortheproject,andthesceneconstructionwithinunity.Keywords:Virtualcampusunity3dThehuman-computerinteraction3dmaxPAGE目录第一章绪论 11.1开发背景及意义 11.2国内外的研究现状 11.3本项目的主要工作 21.4论文的组织结构 2第二章制作工具及技术介绍 32.1Unity3D引擎 32.1.1简介 32.1.2引擎优势 32.1.3Unity3D国内外研究状况 4 2.23DMAX建模工具 42.3Photoshop 5第三章需求与可行性分析 63.1需求分析 63.2可行性分析 63.2.1技术可行性 63.2.2经济可行性 63.2.3操作可行性 6第四章3D校园项目设计 84.1UI设计 84.1.1主界面的实现 84.1.2景点介绍界面的实现 84.1.3小游戏界面的实现 84.2用户使用流程 94.3模型设计 104.3.1教学楼 104.3.2宿舍区 104.3.3体育馆、图书馆 104.4交互功能的设计 124.4.1角色动作控制 124.4.2开场视频的设计 124.4.3景点介绍窗口的设计 124.4.4小游戏的设计 124.4.5按键、鼠标交互的设计 13第五章3D校园功能实现 145.1场景搭建过程 145.1.1场景划分 145.1.2场景建筑建模 145.1.3场景地面制作 185.1.4校园场景搭建 195.1.5场景碰撞体添加 205.1.6光照及天空盒子的添加 205.2UI界面的实现 215.2.1主界面的实现 215.2.2景点介绍界面的实现 225.2.3小游戏界面的实现 225.3交互模块的实现 235.3.1开场动画的触发 235.3.2角色动作控制 245.3.3小游戏的实现 245.3.4其他功能的实现 27第六章功能测试 296.1测试环境 29
6.2测试用例以及结果 29第七章总结 30参考文献 31附录 33致谢 321第一章 绪论1.1开发背景及意义中国经济的飞跃发展下,越多越多的高校以及不单单满足于师资力量与教学质量的提升,同时也为了展现自身风采,提高知名度,提升校园文化等作宣传,与传统的宣传手段相比3D校园技术要来的更加直观形象,更加能体现校园的实景,让人们感觉身临其境,而近些年越来越多的高校与企业都开始发展了虚拟校园建设工作。基于unity3D开发3D校园系统就能向用户展现一个更全面的大学校园,相比起传统的平面图、沙盒模型、效果图等,虚拟校园漫游使用的是一种全新的知识技术在屏幕上呈现一个可视化的校园环境模型,具有较强的交互性和让用户有更深的沉浸式体验,使用户仿佛就身处在校园中,并且可以在虚拟校园内进行全方位的观察体验,可以不受约束的在校园内走动以此来或许信息,且我们能够在准备在场景中的建筑详情板上了解到我们各个校园建筑与景观的背景资料、历史情况等信息。系统的建立能够很好的给学校树立大众形象,提高学校的知名度,方便新生即使足不出户也能为来学校报到提前熟悉学校的环境与具体规划,不会像一个无头苍蝇一样到处乱窜。3D校园会成为一个助力学校对外宣传与校园建设的辅助型工具,对校园管理以及现代化的发展有着推动作用。1.2国内外的研究现状美国作为技术研究的先驱所以发展是比较发达与完善的,互联网的技术已经渗透到了美国大学校园的教学、科研、管理、学习等,在改变传统方式的地位与习惯,而且取得了很多瞩目的成绩。而国内的3d技术起步比较晚,但是近年来政府相关部门与科研院校和各大高校以及开始重视并发展起来,国内研究协会以及将其列入研究项目,在图形学算法、建模、视景技术和3D技术等取得了一定的成果。我国高校使用3D校园的类型一般用于展示校园风景和研究工具环境。国外研究比较多的集中在教育方面,国内的研究则主要集中在展示校园方面,比如清华大学、上海交大、北京大学等都是利用360全景漫游技术配合路线的计算机技术来制作的。1.3本项目的主要工作72本项目主要是使用3DMAX的三维建模功能结合Unity3D脚本编程技术结合,设计与搭建一个能够让用户在环境中自由移动的校园漫游场景且在其中加入一些互动元素,以沉浸性和交互性来构建一个不同于传统的虚拟校园游历体验,让用户拥有更真实的使用经历。构思搭建所需物件的设计和摆放,以及项目所需要的功能分析和开发设计。在3DMAX中把需要的模型建出来。在Unity3D里搭建剩下所需的地形、路面、树木、植被等。角色的基本移动,角色与场景间的物体碰撞检测。角色与建筑、景点之间的交互还有其他与场景间的触发机制。系统的UI1.4论文的组织结构本文共有六个章节来介绍,各章的主要内容如下:第一章:绪论,主要介绍了课题的背景和意义、国内外的研究现状、论文的主要研究内容、论文的组织结构。第二章:介绍了开发系统所需要的各种工具,比如建模工具、开发引擎、图片处理工具等;第三章:简单的分析了一下系统在市场上的需求同时包括几种可行性的分析;第四章:主要是介绍了一些关于系统的功能设计部分,比如ui设计、模型的设计、交互设计和触发设计,然后剩下的实现部分就是第五章的内容。第六章:实际测试,测试项目中的各种功能是否出现错误和误差等结果。第七章:总结,对于本次开发过程中遇到的问题与困难做出总结,同时也对工作的的展望。3第二章制作工具以及介绍2.1Unity引擎2.1.1介绍Unity3D是集开发和设计发布与一身的一个多功能引擎,它能够在创建场景时实时的可视2D或3D的游戏得到广大用户的青睐,是全球最受欢迎的一款游戏引擎。它可以支持开发者直接在PC端上发布自己的游戏,可以利用插件来发布网页游戏。这是他的跨平台性的高度体现,他给用户提供了一个多平台的专业游戏开发工具和一个高度整合的开发引擎。因为各个开发平台的差异会直接影响到开发的进度,针对这个平台间移植的问题开发者往往会花费大量不必要的时间来解决。Unity的跨平台性就完美的处理了这个难题,使得开发时间得到了大大的缩减,加大了开发者的研发力度。2.1.2引擎优势交互性:作为一款游戏引擎,Unity强大的交互功能和它完善的操作机制,我们可以在unity3D中调用网页的JS函数达到数据交互,也可以直接使用3dmax中的模型来搭建,而且untiy脚本兼容C#、JavaScript等大众语言的编写,它的工作模式简洁且直观,并且自带着强大的插件与工具箱,使得开发变得流畅,大大缩短开发周期。物理引擎:物理引擎的好坏是一个游戏或者系统的真实性的重要因素之一,好的引擎它的功能的合理性才能更好的切合开发者对游戏的逻辑性处理,通过unity3D更好的还原现实世界的的实体,物体与物体之间的挤压、碰撞、摩擦等联系,加之unity特有的光源、动画、材质、声音等组件的结合,能够逼真的还原现实世界中的物体体验符合现实中的物理法则。强大的跨平台性:unity3D可以说是实现了全平台发布的壮举,几乎热门的平台上都会有其开发游戏的身影,比如苹果、安卓等,当然电脑端就更加不用说,这得多亏了引擎本身所具备的强大兼容性,能够允许多种热门语言的编写和各种其他软件的互通性,这不仅节约了开发者大量时间还为市场推动了助力。C#脚本开发的优势:因为使用的的是统一的操作符,简化了很多情况下的操作,其简洁的风格受到大众的喜爱,同时许多的错误规范和开发漏洞它都能很好的解决,让开发者有更好的容错率和开发空间。2.1.3国内外研究现状74在Unity对于各个平台的支持和持续更新版本下,unity已经成为全球最换推崇的引擎,它占据了全功能游戏市场的45%的份额,全球用户已经达到了330万人。全球有6亿的玩家在玩unity制作的游戏,在如此庞大的数据量下,越来越多的开发者愿意使用unity引擎来进行开发,而很多用户认为这款工具容易学,容易用,一个月就能大概掌握其功能,因此再往后的时间里unity在市场中的地位也会不断上升。Unity3D是一款全功能性的游戏引擎,无论是在移动端还是其他媒介上都有很多的用户,在其他行业上他也发挥着自己强大无比的功能,它在国内外的地位都是举足轻重的,由暴雪公司发行炉石传说卡牌游戏便是一个很好的例子。越来越多的人认为它是21世界重要的技术发展之一。通过这么多年的努力我国在这方面的发展已经取得了不错的成效,但还是与早期就开始研发的发达国家有一定差距。现在计算机图形学和软件工程学的发展使得虚拟现实技术得到了重视,虚拟场景模型的开发也正朝着更深入和更广阔的方向进行发展。目前,在国内外使用Unity3D进行游戏开发的人员都很多。据调查国内最近相继开盘的小区,都是运用unity3D技术来实现的,这一现象,我们看到了unity引擎开始在中国成长,越来越多的行业会需要用到它的技术,也证明了“是金子总会发亮”这句话,自身的优异性带来的独特优势下,人们意识到自身的需求和审美。发展趋势:Unity是利用图型开发环境为首要方式的软件。Unity的缺点目前就在于AI系统和服务器端不够完善,也是其需要重点改进的地方[6]。Unity3d能做虚拟现实,但是对于硬件的要求很高,暂时只有很少一部分的设备能达到这样的效果。相对在国内来说,Unity基本是刚起步的阶段,但其成本低廉便成为了众多开发者青睐的理由。在物理引擎方面,流体效果以及布料效果也是Unity引擎还未开发的部分,是一个较大的遗憾。随着3d技术在各个领域的蓬勃发展,国内对其的注视程度也日益加重,许多高校都开始纷纷设立VR系统开发,unity游戏开发等课程,可见对于3D技术人才的培养与渴望。同时在国内的各种研究所也开始研究自己的虚拟漫游系统,发展技术可谓是一日千里,相信在不就得将来里,3D技术在中国会发展壮大造福神州大地。2.23DMAX建模工具 3DStudioMax,一般称为3DMAX,,现在各个行业领域都有应用到其功能,作为一款基于PC端的三维动画渲染和建模软件,它可以用的地方都很好,其次它的性价比也非常高,廉价的价格带来的是强大的功能,需要的电脑配置也不会太高,在国内这款软件和Maya比较多人使用在网上教程或者交流的也会很多,因此想要学习或者了解会是一个很好的途径。其次就是3DMAX比较容易上手操作也不会太复杂,简介的用户界面很适合我们这种初学者,这次主要是用来建模我们所需要的场景等。52.3PhotoshopAdobePhotoshop,简称“PS”,一般用于处理图像和修复图像像素,也就是平常我们所说的“修图”,但是在更专业的地方他的用处可不止这点,不论是图片制作还是工业设计等它都可以完美胜任,适用领域非常广泛,此次项目中主要用来进行UI的设计以及模型的贴图美化。96第三章需求和可行性分析3.1需求分析经过多年的互联网发展,人们已经不单单满足于网站文字与二维平面的单一叙述,越来越多的人渴望更加了解他们所感兴趣的学校,通过自己的主观来了解学院风貌与学校生活,以往的宣传方式太过于单调不能够吸引大众眼球,而且信息巨多不适合人们吸收了解,而如果我们适用虚拟3D校园技术不单单大大缩减了大众了解校园的时间,而且还可以足不出户就能了解都外面的世界,对于现在生活节奏如此之快的社会,这项技术的存在。而且在这几年越来越多的高校开始意识到这个问题,并且以及开始了它们自己的3D校园系统。3.2可行性分析3.2.1技术可行性在U3D中对象的行为实现依靠的是附加在上面的脚本来达到效果的,我们可以通过编写脚本来控制一切对象的移动和创建,unity3D主要支持JavaScript、C#和BooScript三种脚本,因为我们学习过C#编写脚本的方法,所以项目接下来会用的也是C#语言完成。此项目也需要进行模型搭建等手工活,但基于unity的包容性,3Dmax内的模型也能够导入其中使用,所以使得我们的计划也更加的顺利,目前为止的学习知识与技术都能满足本次开发的要求,因此我觉得这个项目的制作是可行的。3.2.2经济可行性U3D软件的开发分为个人版和企业版,我们学生使用个人版是不需要收费的,这比起其他软件来说是一个很好的地方,而他所生成的本地文件为exe格式,用户只要一台电脑就可以运行它。Unity引擎的收费相比起虚幻、寒霜等其他引擎来说收费少很多,就是我们通常所说的极致的性价比,所以说主要的花费也就只有人工时长,而相比起其他传统的平面图、效果图等来说收益不是一星半点的高。3.2.3操作可行性U3D的界面风格设计的十分简洁精悍,一眼望下去你所能用到的都已经划分好了给用户,我们能够很直观的知道操作界面,也是非常容易上手,其操作便利也是它近年来越来越受欢迎的一个特点,通过PC端的操作我们能够实时的看到场景的变化,因为他是按照每一帧来变化的所以是非常的严谨的一款软件,同时他还可以在Windows、苹果和安卓等上运行,也可以利用插件发布网页游戏也能支持PC浏览,所以我们只需潜7心在PC端上的开发,通过U3D的强大交互性和脚本功能来让我们系统更加简洁明了让人喜爱。98第四章3D校园项目设计3D校园漫游系统的开发主要包括两大部分,开发流程如下图(4.1)。图4.1系统开发流程图4.1UI设计4.1.1主界面因为我们这些项目的主题是模仿广东东软学院进行的一个3D建模所以我的想法是将我们这些系统的主界面UI设计成以蓝白为主色调的一个封面,而在我们心目中东软的一个象征便是正门处的Neusoft校牌,因此我会以这个图片的元素为封面设计的灵感,主界面会有两个button按钮给选取包含进入校园和退出使用两个功能,两个功能的效果也就像字面意思一样进入和退出。94.1.2景点介绍界面当用户接触到触发开关时就会弹出我们的景点介绍界面,当用户打开了之后首先会看到的是一个一张所在建筑的图片然后在其下面能够获取到他的相关信息比如背景资料、具体作用等。4.1.3小游戏界面的实现为了使我们的项目更具有趣味性,因此我们加入了一个趣味小游戏,然后他的选择界面比较单调,会弹出一个框然后有两个按钮,框里的内容为是或否,效果当然就是进入小游戏场景或者说拒绝进入。4.2用户的使用流程 10图4-2流程图4.3模型设计11 4-3模型平面图4.3.1教学区 这里说的教学区就是A、B、C、D、E、F六座建筑,因为这些建筑群造型比较独特,所以我们需要分解成数个部分来降低我们的建模工作量有些重复的地方也可以复制粘贴,有些复杂一点的需要我们单独拿出来建模,建筑,大型建筑的建模思路就是二维变为三维的的转换,需要有较强的空间感和反复的观察,先用长方体初步建立模型的外观然后在慢慢调整细节还有外形,接着深化一下其他细节,设置门窗还有他的位置以及楼层高度等最后再给房群加上玻璃、墙布等材质和贴图。4.3.2宿舍区具体做法和教学区的做法和上述差不多,相比起来反而简单了不少因为有不少重复的地方。4.3.3体育馆、图书馆 12这两种建筑相比起上面两种更多的是建筑风格的差异,它们更加的注重的是风格,因此我将尽可能的还原模仿外观上的独特。4.4交互功能的设计 4.4.1角色动作控制角色行动是我们这个项目的重中之重,我们通过方向按键响应来移动本体,适用鼠标来达到方向改变,通过给物体和角色挂上刚体(rigidbody)组件和碰撞器,然后将主摄像机调整位置到角色前方处营造一种第一人称视角的感觉,达到我们想要的物体效果,最终实现具有真实感的沉浸式体验,具体做法如下。通过跟随脚本的作用下摄像机能够达到即使随便移动和旋转也能固定在角色的位置不变。碰撞器就是用来检测用户和场景之间的交互,比如设定当角色与其他物体的碰撞器相撞时发生特定的事件来反馈,此外还需要设定好角色的移动速度、跑步速度、视角高度和重力等,让模拟角色更加真实。4.4.2校园宣传视频弹出功能的设计当经过校门处时我们会触发一个自动播放的校园宣传视频,通过脚本实现一个可自动播放的,我们可以写一个延时播放视频的脚本或者整个接收器来给我们的角色触发然后开始播放视频。4.4.3景点介绍功能设计我们在漫游的过程中会在各个景点和建筑群前方于告示牌一样的东西,我们可以在告示牌上放置一个button按钮,然后我们点击按钮触发事件会弹出一个新的窗口然后里面会有建筑对应的相关图片,在图片下方显示会有其相关信息,然后点击右上角可以退出界面。4.4.3小游戏的设计游戏背景:在操场处设立一个NPC或者提示牌然后过去查看会弹出一个提示框内容是,是否要参与这个小游戏,假如我们选择是的话就可以进行一场与AI的趣味障碍跑比赛,如果我们不选择通过游戏,在接下来的地点前会出现透明墙来阻挡我们前进。游戏玩法:(a)操作机制:游戏以第一人称视角控制,键盘WSAD控制人物进行上下左右移动,鼠标控制视角的移动以及旋转,空格键可以跳跃,按shift键可以加速,ESC键调用菜单。(b)流程设计:进入游戏场景后,我们需要等待三秒钟的准备视角倒数。倒数完毕后我们需要通过自己灵巧的走位和操作超过身边的对手得到第一名。1013游戏流程图如下4-4:图4-4游戏流程图当我们通关游戏后场景回弹出一个恭喜第一名的小框,然后点击确定就会返回主场景内,接下来就可以继续前进参观之后的风景。4.4.4按键、鼠标交互的设计(a)视角切换:可以通过按键触发来切换用户是第一人称视角还是第三人称视角,按T键切换。(b)背景音乐开关:可以通过点击来开关音乐,鼠标左键点击右上角喇叭图片。(c)小地图开关:可通过按键M开关小地图。(d)音乐魔方触发:场景中会生成3处悬空的立方体模型,在我们看见立方体后,通过鼠标左键点击可以触发立方体效果,切换成另一首背景音乐。14第五章3D校园功能实现5.1场景搭建过程5.1.1场景划分在建模之前我们需要先在脑海里构思好如何开始工作,首先我会分成建族群、路面地形和自然风景三个部分来完成。在进行建筑群建模时比较常用的是线、面转换的思路,可以通过修改器列表里的挤出和创建多边形来编辑物体,通过对于空间的观察,使用转化为可编辑多边形中的点线面属性来调整形状,然后布尔运行来让几个不同的模型组合在一起来达到自己想要的效果,在3DMAX中大多数物体都可以用这样的方法进行调整,而这也是我比较擅长的一种方法,因此我们的建模都会遵循这个原则其他特殊的模型会做相应的改变。对于路面和地形的建模unity3D自带的地形编辑器Terrain组件就能很好的实现我们所需要的效果因此我们会在U3D里完成。其他风景比如河流、植被、树木等的U3D也有提供素材帮助我们的搭建场景。5.1.2场景建筑建模因为我们的几个建筑群的建模过程都比较雷同,有的只是部分细节的不同,所以这里我们主要详细讲解A、B栋建筑群的建模,其他的就不需要细说了。图5-1A、B栋正面图15①首先我打算先从图5-1的A、B栋建筑开始,通过观察我决定先从两边的楼柱开始,而我的思维是从上到下完成,因此我先搭建屋顶的四角亭部分。 图5-2打开3DMAX工具然后在顶视图里面新建标准基本体中的长方体如上图5-2,然后将观察所得的长宽等数值填入修改器面板处,将长方体属性改为可编辑多边形然后在选择里面选取边(图5-3),图5-3选择左右两条边在边属性下面有个塌陷功能点击塌陷会使物体变成下图5-4的样子。16图5-4再选取顶点属性就可以控制物体的的顶点处,通过移动调节顶点的位置我们可以得到一个四脚亭的模型,然后我们在给它的下方创建两个圆柱体充当支柱,调整圆柱体的数值然后复制粘贴成四份放在长方体的四角,在移动场景中物件的时候要结合几个视图来看,顶视图用来观察左右移动,前视图观察它的上下位置是否有偏差,这样做能更好的帮助在建模时的模型精确程度和工作效率,然后我们将外形建好之后我们需要打开材质编辑器(图5-5)图5-5材质编辑器给物件的外表穿上“衣服”,使用我们调好的材质球和贴图拉动鼠标放在凉亭的顶部或者点击编辑器中的“将材质放入场景“的按钮就完成了,下图5-6示. 图5-6四脚亭 接下来需要完成的四脚亭下部的主楼部分,要达到两座楼相互连通的外观效果需要三个长方体切换成可编辑多边形然后通过布尔运算功能做到让它们叠加在一起,将他们连接起来之后切换到顶视图,选择最左边的一个将他切换到多边形属性选择它的面使用多边形自带的挤出和倒角功能将面往内部挤入制造一个凹槽来让我们的凉亭能够放入其中看起来更加美观,然后给另外一边的楼也做一样的处理调整好位置进行下一步,因为我们看图5-1的楼外表有一三个大玻璃围成的口子的造型所以也需要给前视17图的两个面改造一下,选取其中一边的面切换成边属性然后给他们的表面插入几个顶点将顶点围城下凹的模样,然后切换成点属性使用连接功能把这些点连起来,再把视角切换成顶视图拖动刚刚生成的几条边就能达到想要的效果,然后再用材质编辑器给它添加玻璃的材质。下一步我们要做好两个楼中间的模型效果,需要做两个墙充当墙面和支柱,因为这个构造比较特殊所以我选择了使用样条线的方法来编辑,需要做两个墙充当墙面和支柱,因为这个构造比较特殊所以我选择了使用样条线的方法来编辑,然后我们可以通过调整数值也可以手动调整轴方向将模型内部的凹槽往里面压,在前视图框选好需要挤压的部分再切换回顶视图按F3选取Y轴往上拉,调整位置就额可以了,需要注意的是这样的样条线必须要是闭合的,我们可以切换成顶点鼠标框选没有闭合起来的顶点选择工具里面的熔合然后再用焊接工具,就可以将两个点焊接在一起,最后就在修改器列表选挤出功能,得到我们需要的墙体和支柱。用相同的做法制作多一个,但是需要比之前的大上一倍把他们两个叠在一起营造层次感。最后在前视图中间的连接处长方体选择它的面在上面使用布尔运算扣一排共6个方形的洞口用来放置窗户,不过要小心的是在场景中绘制两个图形,并且他们有相交的地方才可以使用布尔运算,所以我们可以使用附加来让他们先连在一起。选取布尔中的差集(A-B)选项,然后用拾取图形选择扣洞用的图形。将上面几个物件摆放好,最后正面效果如下图5-7。 图5-7a、b栋正面图②建筑的侧面部分是一个呈阶梯式的楼层分布,但其实只要建一片其他两片建筑都可以复制然后再修改一些小细节。首先先要是屋顶,新建长方体,属性改为可编辑多边形然后在选择里面选取边选择左右两条边在边属性选择塌陷,塌陷生成的新图形会多一条新的边,选择这条新边的两个顶点,然后将他们汪中间靠拢移动,一个屋顶完成。然后给房子制作走廊通过走廊可以达到分层的效果,用长方形叠加一起就会有很好的层次感,然后再用圆柱和长方体组合搭建在一起做成栏杆,使用几何体中AEC扩展中的门模型,右键打开捕捉开关选取边/线段,移动门可以自动附加再墙壁上。最后的效果图如下5-8.18图5-8A、B侧面图5.1.3场景地面制作第一步,打开unity,建一个项目,点击SampleScence中的空白,右键鼠标,选择3DObject,然后他的下拉列表里面有一个Terrain(地形),点击即可,紧接着就会在右侧的场景中看见有白色的长方形,图5-9。图5-9Terrain地形选取19第二步,点击刚刚创建的Terrain地形组件就会出现如下图5-10所示,它分别有七个按钮的功能,他们的功能的各不一样。首先我们需要做的就是选择第二个抹平功能选项下的Height功能给我们的地形给予一个高度然后在按右边的flatten按钮,这样做的目的是为了让我们在制作地图时可以有一个高低差。 图5-10高度固定调整第三步,之后我们换回第一个抬高按钮里,在其下方的brushes刷子模型里选择一个合适的来涂刷我们的地形,点击左键不放往上抬可以制作山峰,而如果我们需要在地面开一个洞或者把地面往下压则需要按着键盘shift键再点鼠标左键不放,然后我们可以通过第二按钮或者第三按钮来给模型的表面抹平或者锐化,让地形看起来更加真实美观。第四步,选择第四个按钮笔刷工具,选择editTexturesaddTextures,在文件夹中选择一个草面贴图给地形覆盖上一层贴图,使用我们准备好的水模型加上,通过这项功能我们可以初步呈现制作场景需要的山峰和湖泊等自然景观如图5-11,但往我们都需要放大了来观看,因以我们要把控好视距。放置树木,使用方式大同小异,之后等我们把马路建好再将树木摆放.图5-11初步风景图5.1.4校园场景搭建(1)将提前准备好的场景素材导入,我们的场景马路比较多可以用马路来划分不同的区域段,20(2)在提前准备好导入的预设场景中,选择不同的建筑群,铺设进入场景中,一样采用的是对称的摆放方法,为了实现正确的碰撞体积,我们用的建筑多为方体,建筑摆放完毕后,加入一些细节元素如:路灯、交通灯、围栏等。(3)完善场景细节,增加树木等植被,交通灯等的摆放规律以及场景空地的补齐。5.1.5场景碰撞体添加(1)为所有摆放在场景内的所有建筑物以及树木、交通灯以及地面等的模型添加碰撞体,增加了BoxCollider组件,调整模型,为的是不会产生穿模,或者影响系统合理性。 图5-12box碰撞体 (2)为了测试碰撞体,创建了一个第一人称视角的角色控制器,调整相机高度、相机视角后,增加刚体,进行测试:控制第一人称角色控制器去碰撞所有的建筑物、树木和摆设,测试其碰撞体积是否正确。经过测试,所有场景中的建筑物、树木和交通灯等的陈列的碰撞体都添加完毕,与第一人称视觉的角色控制器控制的碰撞体之间的碰撞没有任何问题,5.1.5天空盒子的添加(1)在GameObject选项菜单中新建Light-DirectionalLight,作为基础的环境光照。(2)导入提前准备好的天空盒子(SkyBox),选中第一人称角色控制器的相机,在Component选项菜单中点击Rendering-Skybox新建Skybox组件,将天空盒子的预设导入,天空盒子实际是使用了Shader材质的特殊类型,就像一个巨大的立方体包裹了整个场景然后在内测加上贴图来模拟天空的效果,增加了真实感看起来更加美观。具体效果如图5-13所示。 图5-13天空盒子效果215.2UI界面的实现5.2.1主界面的实现主界面主要以图5-14为背景图。图5-14背景图我们在设计的时候曾说过要以蓝白为主色调所以接下来要使用PS工具来进行图片的修改。然后打开unity第一步:建立一个Canvas,用以UI的放置第二步:建立主菜单的Panel,将用Photoshop制作好的背景图拖入Panel的Image组件的SourceImage处22第三步:以Panel作为父类,在Panel上加入各个Button按钮,同样将做好的按钮图片拖入Button的Image,调整好大小和位置,再创建一个TEXT输入操作方式的内容,设置字体和大小,调整位置,这样完成了一个最基本的菜单界面。5.2.2景点介绍界面的实现这一功能作用是让用户操作角色模拟器漫游时可以通过点击建筑前的互动板点击OnClick弹出窗口并显示该建筑物的有关信息,如:建成时间、建筑面积、所属院系专业、建筑作用等等。当用户要离开时可以点击窗口右上角的X来返回主场景内。具体制作如下第一步:在关卡场景中建立一个Canvas,在canvas下建立一个Panel命名为menuPanel,加入一个TEXT,写入相关信息,调节至合适的大小和位置到面板居中。第二步:加入三个toggle,拖入相应的按钮图片,分别作为setting、save、exit选项按钮。建立一个空物体,命名为“menuToggleG”,加入togglegroup组件,将menuToggleG拖入三个toggle选项按钮的group。第三步:照第二部的制作方法给其他建筑群做一套信息面板,入各自的功能Image图标和功能按钮。5.2.3小游戏界面的实现我们在操场路边摆放一个NPC,然后创建一个C#脚本,添加到对象中,通过OnClick函数来判断是否被点击过,当用户点击了NPC就会弹出一个提示框如图5-15,在提示框我们创建两个Button按钮,在Button内添加Text,修改相关信息。23图5-15第二步,当我们点击同意按钮之后,用户就会通过loadScene语句,跳转到新的场景中,相识的当我们要做二级面板用于退出小游戏的时候我们也可以通过点击按钮调用语句来跳转回原来的主场景中,二级面板的相关制作流程和上面的对话框类似,不过文本采用的方法是默认隐藏窗口,通过点击显示窗口和文字,但是为了不出现相互重叠的情况,设置点击响应的时候弹出下一个窗口的同时要关闭上一个,具体做法是在两个窗口的脚本里写一个SetActive函数,通过布尔变量的true和false来控制两个响应时间的显示和不显示。5.3交互功能和触发事件的实现5.3.1开场校园宣传视频的触发之前的unity播放视频方式主要有两种。第一种是在游戏对象中播放,原理就是摄像机照射到平面,第二种是UI播放,类似于贴图(别忘了MovieTexture属于texture的子类)。现在新版Unity增加了新的播放视频的方式,那就是直接在project界面新建.6自带的VideoPlayer。(1)选择选项PlayOnAwake:脚本载入时自动播放。(2)itForFirstFrame:决定是否在第一帧加载完成后才播放,只有在PlayOnAwake被勾选是才有效。可以防止视频最前几帧被跳过。(3)在VideoPlayer物体上新建一个AudioSource声音组件,这样我们的视频就会有声音。(4)此时我们还需要使用触发器,新建一个CUBE空对象,把他的istrigger触发器选项勾选起来新建一个脚本文件叫MoviesPlay,通过布尔变量来表示我们视频播放的24开关状态,当我们视频播放完毕时为false,当触发了false的条件时我们的视频就会自动关闭消失。5.3.2角色动作控制第一步,首先我们需要导入角色本体命名为Player第二步,给Player添加角色控制器图5-16:依次打开菜单栏中的Component-Physiscs-CharacterController,该组件是角色移动的前提图5-16角色控制器第三步,给Player新建一个脚本文件命名为Move,使用GetKey接受键盘的方向键。然后在tranform方法,通过使用该方法我们可以实现物体的坐标移动,结合鼠标使用的Rotate()函数将其绑在我们的主摄像机上我们可以实现用鼠标旋转镜头,达到转向的效果,利用Input类中的方法Getbutton来实现按键输入的捕捉,实现加速和跳跃功能,使用Horizontal和Vertical来响应物体是在垂直还是水平方向移动。第四步,创建新的脚本文件CameraMove,然后给它加入代码后,将脚本文件拖给主摄像机,然后再将我们本体角色Player拖到Camera下方,最后在Hierarchy中将摄像机拉到Player内,调整摄像机视角到角色正前方即可。5.3.3小游戏实现①沿用上面角色控制器的移动脚本,不过因为我们的是障碍跑游戏且需要与AI竞技,所以我们应该给移动脚本添加一个加速功能,修改一下脚本,加入一个新的GetKey当我们按下shift时候改变角色的速度变量达到加速的效果。25②赛道设置障碍物,首先新建一个空物体,命名为GameManager图5-17,为其新建C#ScriptGameManager.cs,然后打开该脚本。,点击GameManager这个物体,设置其GameManager组件的值。 图5-17GameManager组件这里的BornPos指的是障碍物出生点,以下图所示为每一条道路定义一个或多个出生点,每条路的出生点用一个BornPos的空物体进行管理。为人物添加Collider与RightBody,为所有障碍物和路面添加Collider(注意不要勾上IsTrigger)然后运行游戏就会有生成好的障碍物。③敌人的AI的实现,运用自动寻路技术,首先需要将我们的赛道和障碍物等在Inspector——Static——NavigationStatic。如下图5-17-1图5-17-126选中我们的角色和需要寻路的对手在导航栏里选中Component——Navigation——NavMeshAgent组件。如下图5-17-2.图5-17-2接下来在导航栏里打开window-Navigation窗口,在Navigation窗口里面选择Bake然后再选择右下角的Bake。如下图5-17-3。图5-17-3.27最后将代码挂在敌人的身上就可以实现Ai效果。④在终点处设置一个触发器trigger,通过触发器检测来判断先到的是玩家还是对手,运用布尔函数设置胜利为true,失败为false,如果第一个通过的是对手,则触发器检测到会返回false函数,收到调用之后游戏会强制结束,然后弹出是否重新游戏的ui窗口,通过OnClick()方法点击确定事项就会跳转回游戏开始时的场景画面。而如果我们的玩家第一个通过终点,经过触发器的返回则是true,玩家获得游戏胜利,则可跳转回主场景,返回回来的false函数同时也在隐形墙处被调用,墙体被销毁。5.3.4其他功能的实现小地图制作:首先:打开Unity,在Hierarchy面板中点击鼠标右键创建一个Plane和一个Cube,调整好它们的位置,设置好Cube的数值。新建一个摄像机命名smallmap,然后,选择ui内的image,在Inspector中将image的RectTransform移动到在右上角。第二步,将场景的视角调整为顶视图,把摄像机smallmap的视角由X轴旋转90度然后再调整Y轴的位置。第三步,在Hierarchy面板中右键从UI中新建一个RawImage,调整位置到右上角,将上述新建的MiniMapTest拖入RawImage的Texture属性即可。第四步,在smallmap挂载一个FollowTarget脚本,将我们的Player角色拖入FollowTarget的Target属性就行,然后我们就能看到右上角的小地图会根据人物的移动而移动达到跟随的效果。第五步,将Map拖入Cube中,以实现摄像机跟随效果。背景音和其他音效制作:把需要音效物体预制体上创建一个AudioSource组件,将每个关卡相应的背景音乐片段拖入,勾选PlayOnAwake和Loop,如图5-18所示图5-18将准备好的音效素材拖入vocal上,图5-1928 图5-19(3)最后GameController空物体中添加AudioSource组件,勾选PlayOnAwake,进入场景即可自动播放。“音乐魔方”的制作:创建名为SoundPlayer脚本挂给魔方,通过点击事件Onclick,来给物体添加AudioSource组件,通过GetComponent获取音源组件audio,获取组件后即可播放音乐。视角切换:①创建脚本Cameramove把它拉给Camer摄像头,然后将Camer拉给我们的角色Player下,如下图5-20,把摄像头视角调到Player正前方,达到第一人称的效果。再准备一份第三人称的。图5-20然后新建一个空对象CUBE,将第三人称拉到空物体下方(如上图),然后也将摄像机放到这个空物体下。②创建视角切换的脚本viewpointSwith,挂再Player上通过bool变量获取玩家是否通过KeyCode按下T建来达到控制对象的隐藏和显示29第六章功能测试6.1测试环境CPU:IntelCorei5-7300HQGPU:NividaGTX1050RAM:8GROM:WD10JUCTOS:Windows1064bit
6.2测试用例及结果
序号测试功能操作预期效果结果1.Ui界面按钮点击进入系统点击进入系统与预期一致2.人物移动键盘输入人物进行移动与预期一致3.小游戏障碍物生成点击开始游戏生成生成障碍与预期一致4.音效自动播放,切换开关音效成功播放与预期一致5敌人AI点击开始游戏能到达终点游戏开始自己动于预期一致6关闭系统点击关闭点击关闭系统消失与预期一致30第七章总结经过这次实验收获了很多经验,对我们学校的风景人文也有更加深入的了解,比较可惜的是还有很多的不足之处,比如3DMAX建模的时候有喜多细节的地方做的不是很好,贴图和材质编辑器部分的效果不是很好,虽然花了不少时间去学习。而在脚本编程方面的一些逻辑功能实现上需要花费的时间多一点。在这一过程中,我不仅有了进步,同时还认识到了自己还有许多不足还需要多多学习。在往后的日子里不断学习,不断完善自我。虽然本次设计还有许多遗憾,但也还是收获颇丰。我想,随着我不断的学习和积累,不断尝试,技术会得到更大的提升,做出更加完美的游戏。31 参考文献[[1]薛玉倩.基于unity3D的虚拟实验平台.内蒙古科技与经济.2019-09-30[2]欧阳攀、李强、卢秀慧。基于UNIty3Dd的虚拟校园开发研究与实现[J]。现代电子技术,2013(4):19-22[3]朱慧娟,基于unity3D的虚拟漫游系统[J],计算机系统应用,2012(10):36-39.[4]尹大伟、张熙若、李欢欢、马恒锐、孟祥锐,基于Unity3D的虚拟校园漫游系统及其关键技术研究,2019-09-05[5]周邹,虚拟校园漫游的应用与研究,2016-05-05[6]李春葆、曾平、喻丹丹.C#程序设计(第三版)[M].北京:清华大学出版社.2015.10.01[7]郝爱民,何兵,赵沁平;虚拟现实中的增强虚境技术[J];北京航空航天大学学报;2003年10期[8]陈阿林;胡朝晖;祁相志;;校园虚拟现实三维场景建模技术及实现方法研究[J];重庆师范大学学报(自然科学版);2007年04期[9]赵红领;曹明亮;;虚拟校园漫游系统中的关键技术[J];河南教育学院学报(自然科学版);2006年04期[10][美]josephHockingunity[著].蔡俊鸿[译].5实现使用C#和unity多开发平台游戏[M].北京:清华大学出版社.2016年五月第1版[11]李兵川.基于Unity3D游戏开发流程分析[J].山东工业技术,2018(07):148.[12]温涵泳.基于HTCVive平台的防化训练虚拟现实系统[D].华南理工大学,2017.[13]王华宾.具有FFT/IFFT和CAN通讯功能的轮速信号处理模块设计[D].燕山大学,2013.[14]王辉.虚拟现实技术再三维漫游中的应用研究[J].电子技术与软件工程,2015.[15]郭睿静,张帅.基于unity3D游戏动作的控制和设计[J].兰州文理学院学报(自然科学版),2015.[16][美]MarkMichaelisEricLippert[著].周靖[译].C#本质论(第四版):2014年 . 32 致谢经历东软四年的学习生涯我毕生难忘,美好的校园生活圆满了。接下来我想对我的指导老师潘永明说一声谢谢,在潘老师的关怀和指导下我最终完成了项目的论文及开发。同时我还要感谢陪伴了我们三年的魏菊霞老师,从起初的JS制作网页小游戏到后来的unity3D开发游戏和VR开发的课程都是魏菊霞老师教我们的,她是我游戏学习的启蒙,在她的带领下我学会了如何独立的完成一个游戏制作同时也学习到了和他人合作制作游戏时的分工合作,完成这个项目花费了几个月的时间,投入了许多心血虽然做的可能还不够好,但是我希望在接下来的生活里继续学习,为了美好的明天,在最后我还要再一次对帮助过我完成项目的老师和同学朋友们的说一声感谢!
ExcelXP的八则快速输入技巧如果我们在用ExcelXP处理庞大的数据信息时,不注意讲究技巧和方法的话,很可能会花费很大的精力。因此如何巧用ExcelXP,来快速输入信息就成为各个ExcelXP用户非常关心的话题,笔者向大家介绍几则这方面的小技巧。1、快速输入大量含小数点的数字如果我们需要在ExcelXP工作表中输入大量的带有小数位的数字时,按照普通的输入方法,我们可能按照数字原样大小直接输入,例如现在要在单元格中输入0.05这个数字时,我们会把“0.05”原样输入到表格中。不过如果需要输入若干个带有小数点的数字时,我们再按照上面的方法输入的话,每次输入数字时都需要重复输入小数点,这样工作量会变大,输入效率会降低。其实,我们可以使用ExcelXP中的小数点自动定位功能,让所有数字的小数点自动定位,从而快速提高输入速度。在使用小数点自动定位功能时,我们可以先在ExcelXP的编辑界面中,用鼠标依次单击“工具”/“选项”/“编辑”标签,在弹出的对话框中选中“自动设置小数点”复选框,然后在“位数”微调编辑框中键入需要显示在小数点右面的位数就可以了。以后我们再输入带有小数点的数字时,直接输入数字,而小数点将在回车键后自动进行定位。例如,我们要在某单元格中键入0.06的话,可以在上面的设置中,让“位数”选项为2,然后直接在指定单元格中输入6,回车以后,该单元格的数字自动变为“0.06”,怎么样简单吧?2、快速录入文本文件中的内容现在您手边假如有一些以纯文本格式储存的文件,如果此时您需要将这些数据制作成ExcelXP的工作表,那该怎么办呢?重新输入一遍,大概只有头脑有毛病的人才会这样做;将菜单上的数据一个个复制/粘贴到工作表中,也需花很多时间。没关系!您只要在ExcelXP中巧妙使用其中的文本文件导入功能,就可以大大减轻需要重新输入或者需要不断复制、粘贴的巨大工作量了。使用该功能时,您只要在ExcelXP编辑区中,依次用鼠标单击菜单栏中的“数据/获取外部数据/导入文本文件”命令,然后在导入文本会话窗口选择要导入的文本文件,再按下“导入”钮以后,程序会弹出一个文本导入向导对话框,您只要按照向导的提示进行操作,就可以把以文本格式的数据转换成工作表的格式了。3、快速输入大量相同数据如果你希望在不同的单元格中输入大量相同的数据信息,那么你不必逐个单元格一个一个地输入,那样需要花费好长时间,而且还比较容易出错。你可以通过下面的操作方法在多个相邻或不相邻的单元格中快速填充同一个数据,具体方法为:首先同时选中需要填充数据的单元格。若某些单元格不相邻,可在按住Ctrl键的同时,点击鼠标左键,逐个选中;其次输入要填充的某个数据。按住Ctrl键的同时,按回车键,则刚才选中的所有单元格同时填入该数据。4、快速进行中英文输入法切换一张工作表常常会既包含有数字信息,又包含有文字信息,要录入这样一种工作表就需要我们不断地在中英文之间反复切换输入法,非常麻烦,为了方便操作,我们可以用以下方法实现自动切换:首先用鼠标选中需要输入中文的单元格区域,然后在输入法菜单中选择一个合适的中文输入法;接着打开“有效数据”对话框,选中“IME模式”标签,在“模式”框中选择打开,单击“确定”按钮;然后再选中输入数字的单元格区域,在“有效数据”对话框中,单击“IME模式”选项卡,在“模式”框中选择关闭(英文模式);最后单击“确定”按钮,这样用鼠标分别在刚才设定的两列中选中单元格,五笔和英文输入方式就可以相互切换了。5、快速删除工作表中空行删除ExcelXP工作表中的空行,一般的方法是需要将空行都找出来,然后逐行删除,但这样做操作量非常大,很不方便。那么如何才能减轻删除工作表中空行的工作量呢?您可以使用下面的操作方法来进行删除:首先打开要删除空行的工作表,在打开的工作表中用鼠标单击菜单栏中的“插入”菜单项,并从下拉菜单中选择“列”,从而插入一新的列X,在X列中顺序填入整数;然后根据其他任何一列将表中的行排序,使所有空行都集中到表的底部。删去所有空行中X列的数据,以X列重新排序,然后删去X列。按照这样的删除方法,无论工作表中包含多少空行,您就可以很快地删除了。6、快速对不同单元格中字号进行调整在使用ExcelXP编辑文件时,常常需要将某一列的宽度固定,但由于该列各单元格中的字符数目不等,致使有的单元格中的内容不能完全显示在屏幕上,为了让这些单元格中的数据都显示在屏幕上,就不得不对这些单元格重新定义较小的字号。如果依次对这些单元格中的字号调整的话,工作量将会变得很大。其实,您可以采用下面的方法来减轻字号调整的工作量:首先新建或打开一个工作簿,并选中需要ExcelXP根据单元格的宽度调整字号的单元格区域;其次单击用鼠标依次单击菜单栏中的“格式”/“单元格”/“对齐”标签,在“文本控制”下选中“缩小字体填充”复选框,并单击“确定”按钮;此后,当你在这些单元格中输入数据时,如果输入的数据长度超过了单元格的宽度,ExcelXP能够自动缩小字符的大小把数据调整到与列宽一致,以使数据全部显示在单元格中。如果你对这些单元格的列宽进行了更改,则字符可自动增大或缩小字号,以适应新的单元格列宽,但是对这些单元格原设置的字体字号大小则保持不变。7、快速输入多个重复数据在使用ExcelXP工作表的过程中,我们经常要输入大量重复的数据,如果依次输入,无疑工作量是巨大的。现在我们可以借助ExcelXP的“宏”功能,来记录首次输入需要重复输入的数据的命令和过程,然后将这些命令和过程赋值到一个组合键或工具栏的按钮上,当按下组合键时,计算机就会重复所记录的操作。使用宏功能时,我们可以按照以下步骤进行操作:首先打开工作表,在工作表中选中要进行操作的单元格;接着再用鼠标单击菜单栏中的“工具”菜单项,并从弹出的下拉菜单中选择“宏”子菜单项,并从随后弹出的下级菜单中选择“录制新宏”命令;设定好宏后,我们就可以对指定的单元格,进行各种操作,程序将自动对所进行的各方面操作记录复制。8、快速处理多个工作表有时我们需要在ExcelXP中打开多个工作表来进行编辑,但无论打开多少工作表,在某一时刻我们只能对一个工作表进行编辑,编辑好了以后再依次编辑下一个工作表,如果真是这样操作的话,我们倒没有这个必要同时打开多个工作表了,因为我们同时打开多个工作表的目的就是要减轻处理多个工作表的工作量的,那么我们该如何实现这样的操作呢?您可采用以下方法:首先按住“Shift"键或“Ctrl"键并配以鼠标操作,在工作簿底部选择多个彼此相邻或不相邻的工作表标签,然后就可以对其实行多方面的批量处理;接着在选中的工作表标签上按右键弹出快捷菜单,进行插入和删除多个工作表的操作;然后在“文件”菜单中选择“页面设置……”,将选中的多个工作表设成相同的页面模式;再通过“编辑”菜单中的有关选项,在多个工作表范围内进行查找、替换、定位操作;通过“格式”菜单中的有关选项,将选中的多个工作表的行、列、单元格设成相同的样式以及进行一次性全部隐藏操作;接着在“工具”菜单中选择“选项……”,在弹出的菜单中选择“视窗”和“编辑”按钮,将选中的工作表设成相同的视窗样式和单元格编辑属性;最后选中上述工作表集合中任何一个工作表,并在其上完成我们所需要的表格,则其它工作表在相同的位置也同时生成了格式完全相同的表格。高效办公Excel排序方法"集中营"排序是数据处理中的经常性工作,Excel排序有序数计算(类似成绩统计中的名次)和数据重排两类。本文以几个车间的产值和名称为例,介绍Excel2000/XP的数据排序方法。一、数值排序1.RANK函数RANK函数是Excel计算序数的主要工具,它的语法为:RANK(number,ref,order),其中number为参与计算的数字或含有数字的单元格,ref是对参与计算的数字单元格区域的绝对引用,order是用来说明排序方式的数字(如果order为零或省略,则以降序方式给出结果,反之按升序方式)。例如图1中E2、E3、E4单元格存放一季度的总产值,计算各车间产值排名的方法是:在F2单元格内输入公式“=RANK(E2,$E$2:$E$4)”,敲回车即可计算出铸造车间的产值排名是2。再将F2中的公式复制到剪贴板,选中F3、F4单元格按Ctrl+V,就能计算出其余两个车间的产值排名为3和1。如果B1单元格中输入的公式为“=RANK(E2,$E$2:$E$4,1)”,则计算出的序数按升序方式排列,即2、1和3。需要注意的是:相同数值用RANK函数计算得到的序数(名次)相同,但会导致后续数字的序数空缺。假如上例中F2单元格存放的数值与F3相同,则按本法计算出的排名分别是3、3和1(降序时)。2.COUNTIF函数COUNTIF函数可以统计某一区域中符合条件的单元格数目,它的语法为COUNTIF(range,criteria)。其中range为参与统计的单元格区域,criteria是以数字、表达式或文本形式定义的条件。其中数字可以直接写入,表达式和文本必须加引号。仍以图1为例,F2单元格内输入的公式为“=COUNTIF($E$2:$E$4,">"&E2)+1”。计算各车间产值排名的方法同上,结果也完全相同,2、1和3。此公式的计算过程是这样的:首先根据E2单元格内的数值,在连接符&的作用下产生一个逻辑表达式,即“>176.7”、“>167.3”等。COUNTIF函数计算出引用区域内符合条件的单元格数量,该结果加一即可得到该数值的名次。很显然,利用上述方法得到的是降序排列的名次,对重复数据计算得到的结果与RANK3.IF函数Excel自身带有排序功能,可使数据以降序或升序方式重新排列。如果将它与IF函数结合,可以计算出没有空缺的排名。以图1中E2、E3、E4单元格的产值排序为例,具体做法是:选中E2单元格,根据排序需要,单击Excel工具栏中的“降序排序”或“升序排序”按钮,即可使工作表中的所有数据按要求重新排列。假如数据是按产值由大到小(降序)排列的,而您又想赋予每个车间从1到n(n为自然数)的排名。可以在G2单元格中输入1,然后在G3单元格中输入公式“=IF(E3=E2,G3,G3+1)”,只要将公式复制到G4等单元格,就可以计算出其他车间的产值排名。二、文本排序选举等场合需要按姓氏笔划为文本排序,Excel提供了比较好的解决办法。如果您要将图1数据表按车间名称的笔划排序,可以使用以下方法:选中排序关键字所在列(或行)的首个单元格(如图1中的A1),单击Excel“数据”菜单下的“排序”命令,再单击其中的“选项”按钮。选中“排序选项”对话框“方法”下的“笔画排序”,再根据数据排列方向选择“按行排序”或“按列排序”,“确定”后回到“排序”对话框(图2)。如果您的数据带有标题行(如图1中的“单位”之类),则应选中“有标题行”(反之不选),然后打开“主要关键字”下拉列表,选择其中的“单位”,选中排序方式(“升序”或“降序”)后“确定”,表中的所有数据就会据此重新排列。此法稍加变通即可用于“第一名”、“第二名”等文本排序,请读者自行摸索。三、自定义排序如果您要求Excel按照“金工车间”、“铸造车间”和“维修车间”的特定顺序重排工作表数据,前面介绍的几种方法就无能为力了。这类问题可以用定义排序规则的方法解决:首先单击Excel“工具”菜单下的“选项”命令,打开“选项”对话框中的“自定义序列”选项卡(图3)。选中左边“自定义序列”下的“新序列”,光标就会在右边的“输入序列”框内闪动,您就可以输入“金工车间”、“铸造车间”等自定义序列了,输入的每个序列之间要用英文逗号分隔,或者每输入一个序列就敲回车。如果序列已经存在于工作表中,可以选中序列所在的单元格区域单击“导入”,这些序列就会被自动加入“输入序列”框。无论采用以上哪种方法,单击“添加”按钮即可将序列放入“自定义序列”中备用(图3)。使用排序规则排序的具体方法与笔划排序很相似,只是您要打开“排序选项”对话框中的“自定义排序次序”下拉列表,选中前面定义的排序规则,其他选项保持不动。回到“排序”对话框后根据需要选择“升序”或“降序”,“确定”后即可完成数据的自定义排序。需要说明的是:显示在“自定义序列”选项卡中的序列(如一、二、三等),均可按以上方法参与排序,请读者注意Excel提供的自定义序列类型。谈谈Excel输入的技巧在Excel工作表的单元格中,可以使用两种最基本的数据格式:常数和公式。常数是指文字、数字、日期和时间等数据,还可以包括逻辑值和错误值,每种数据都有它特定的格式和输入方法,为了使用户对输入数据有一个明确的认识,有必要来介绍一下在Excel中输入各种类型数据的方法和技巧。一、输入文本Excel单元格中的文本包括任何中西文文字或字母以及数字、空格和非数字字符的组合,每个单元格中最多可容纳32000个字符数。虽然在Excel中输入文本和在其它应用程序中没有什么本质区别,但是还是有一些差异,比如我们在Word、PowerPoint的表格中,当在单元格中输入文本后,按回车键表示一个段落的结束,光标会自动移到本单元格中下一段落的开头,在Excel的单元格中输入文本时,按一下回车键却表示结束当前单元格的输入,光标会自动移到当前单元格的下一个单元格,出现这种情况时,如果你是想在单元格中分行,则必须在单元格中输入硬回车,即按住Alt键的同时按回车键。二、输入分数几乎在所有的文档中,分数格式通常用一道斜杠来分界分子与分母,其格式为“分子/分母”,在Excel中日期的输入方法也是用斜杠来区分年月日的,比如在单元格中输入“1/2”,按回车键则显示“1月2日”,为了避免将输入的分数与日期混淆,我们在单元格中输入分数时,要在分数前输入“0”(零)以示区别,并且在“0”和分子之间要有一个空格隔开,比如我们在输入1/2时,则应该输入“01/2”。如果在单元格中输入“81/2”,则在单元格中显示“81/2”,而在编辑栏中显示“三、输入负数在单元格中输入负数时,可在负数前输入“-”作标识,也可将数字置在()括号内来标识,比如在单元格中输入“(88)”,按一下回车键,则会自动显示为“-88”。四、输入小数在输入小数时,用户可以向平常一样使用小数点,还可以利用逗号分隔千位、百万位等,当输入带有逗号的数字时,在编辑栏并不显示出来,而只在单元格中显示。当你需要输入大量带有固定小数位的数字或带有固定位数的以“0”字符串结尾的数字时,可以采用下面的方法:选择“工具”、“选项”命令,打开“选项”对话框,单击“编辑”标签,选中“自动设置小数点”复选框,并在“位数”微调框中输入或选择要显示在小数点右面的位数,如果要在输入比较大的数字后自动添零,可指定一个负数值作为要添加的零的个数,比如要在单元格中输入“88”后自动添加3个零,变成“88000”,就在“位数”微调框中输入“-3”,相反,如果要在输入“88”后自动添加3位小数,变成“0.088”,则要在“位数”微调框中输入“3”。另外,在完成输入带有小数位或结尾零字符串的数字后,应清除对“自动设置小数点”符选框的选定,以免影响后边的输入;如果只是要暂时取消在“自动设置小数点”中设置的选项,可以在输入数据时自带小数点。五、输入货币值Excel几乎支持所有的货币值,如人民币(¥)、英镑(£)等。欧元出台以后,Excel2000完全支持显示、输入和打印欧元货币符号。用户可以很方便地在单元格中输入各种货币值,Excel会自动套用货币格式,在单元格中显示出来,如果用要输入人民币符号,可以按住Alt键,然后再数字小键盘上按“0165”即可。六、输入日期Excel是将日期和时间视为数字处理的,它能够识别出大部分用普通表示方法输入的日期和时间格式。用户可以用多种格式来输入一个日期,可以用斜杠“/”或者“-”来分隔日期中的年、月、日部分。比如要输入“2001年12月1日”,可以在单元各种输入“2001/12/1”或者“2001-12-1七、输入时间在Excel中输入时间时,用户可以按24小时制输入,也可以按12小时制输入,这两种输入的表示方法是不同的,比如要输入下午2时30分38秒,用24小时制输入格式为:2:30:38,而用12小时制输入时间格式为:2:30:38p,注意字母“p”和时间之间有一个空格。如果要在单元格中插入当前时间,则按Ctrl+Shift+;键。了解Excel公式的错误值经常用Excel的朋友可能都会遇到一些莫名奇妙的错误值信息:#N/A!、#VALUE!、#DIV/O!等等,出现这些错误的原因有很多种,如果公式不能计算正确结果,Excel将显示一个错误值,例如,在需要数字的公式中使用文本、删除了被公式引用的单元格,或者使用了宽度不足以显示结果的单元格。以下是几种常见的错误及其解决方法。1.#####!原因:如果单元格所含的数字、日期或时间比单元格宽,或者单元格的日期时间公式产生了一个负值,就会产生#####!错误。解决方法:如果单元格所含的数字、日期或时间比单元格宽,可以通过拖动列表之间的宽度来修改列宽。如果使用的是1900年的日期系统,那么Excel中的日期和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导致#####!错误。如果公式正确,也可以将单元格的格式改为非日期和时间型来显示该值。2.#VALUE!当使用错误的参数或运算对象类型时,或者当公式自动更正功能不能更正公式时,将产生错误值#VALUE!。原因一:在需要数字或逻辑值时输入了文本,Excel不能将文本转换为正确的数据类型。解决方法:确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如:如果单元格A1包含一个数字,单元格A2包含文本"学籍",则公式"=A1+A2"将返回错误值#VALUE!。可以用SUM工作表函数将这两个值相加(SUM函数忽略文本):=SUM(A1:A2)。原因二:将单元格引用、公式或函数作为数组常量输入。解决方法:确认数组常量不是单元格引用、公式或函数。原因三:赋予需要单一数值的运算符或函数一个数值区域。解决方法:将数值区域改为单一数值。修改数值区域,使其包含公式所在的数据行或列。3.#DIV/O!当公式被零除时,将会产生错误值#DIV/O!。原因一:在公式中,除数使用了指向空单元格或包含零值单元格的单元格引用(在Excel中如果运算对象是空白单元格,Excel将此空值当作零值)。解决方法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。原因二:输入的公式中包含明显的除数零,例如:=5/0。解决方法:将零改为非零值。4.#NAME?在公式中使用了Excel不能识别的文本时将产生错误值#NAME?。原因一:删除了公式中使用的名称,或者使用了不存在的名称。解决方法:确认使用的名
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论