虚拟现实仿真毕业论文 基于Unity3D的工程建筑仿真实践教学平台设计_第1页
虚拟现实仿真毕业论文 基于Unity3D的工程建筑仿真实践教学平台设计_第2页
虚拟现实仿真毕业论文 基于Unity3D的工程建筑仿真实践教学平台设计_第3页
虚拟现实仿真毕业论文 基于Unity3D的工程建筑仿真实践教学平台设计_第4页
虚拟现实仿真毕业论文 基于Unity3D的工程建筑仿真实践教学平台设计_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子与信息工程学院本 科 毕 业 论 文论文题目 基于unity3d的工程建筑 仿真实践教学平台设计 学生姓名 马 俊 文 学 号 20123521076 专 业 电气工程及其自动化 班 级 1 指导教师 阮 国 龙 2016年5月摘 要随着虚拟现实仿真技术的发展,各大高校已开始运用此技术进行仿真教学,使学生讲理论知识与实际操作相结合。应建筑专业的要求,我们设计了一款建筑虚拟仿真教学平台系统。本系统主要运用到了c#语言知识,数据库sql server操作和unity3d软件,通过ui操作界面与3d场景模型的交互,从而模拟出了学生所需要学习的实习环境。本系统自带了答题系统与评估系统,并真正做到了

2、答题与场景动画相结合,从而让学生在答题途中也能接触到实际的操作环境。本系统分为了多个模块,每个模块所表现的内容页有所不同。学生通过新的教学方式,不一样的学习环境,定能真正的将理论和实际结合学的更为透彻。关 键 词:虚拟现实;数据库;计算机语言;学习;unity3dabstractwith the development of virtual reality simulation technology, the major colleges and universities have begun to use this technology to carry out simulation tea

3、ching, so that students speak theoretical knowledge and practical operation. we designed a teaching platform system for building virtual simulation. the system is mainly applied to the c# language knowledge, database server sql operation and unity3d software, through the ui interface and the 3d scen

4、e model interaction, thus simulating the students need to learn the practice environment.the system comes with the answer system and assessment system, and really do the answer and scene animation combination, so that students in the answer on the way to be able to contact with the actual operating

5、environment. the system is divided into several modules, each module of the performance of the content page is different. students through the new teaching methods, not the same as the learning environment, will be able to really combine theory and practice more thoroughly.key words: virtual reality

6、; data base; computer language; study;unity3d目 录1 绪论21.1 课题背景21.2 课题研究的目的和意义21.3 课题的主要研究工作22 系统总体设计22.1 系统功能22.2 系统设计原则22.3 系统结构图23 系统功能设计23.1 数据库设计23.2 登录界面设计23.3 版块内容设计23.3.1 施工工艺实训室设计23.3.2 定额测定实训室设计23.3.3 园林工艺实训室设计23.3.4 造价控制实训室设计23.4 答题模式设计23.5 评估系统设计24 系统测试25 结论与展望2致 谢2参考文献2附录21 绪论本论文表明了当今学生学习

7、无法将理论知识与实际操作相结合的问题,阐述了运用虚拟现实仿真技术解决这一难题的意义所在,以及国内众多高校慢慢都开始使用此技术来继续进一步的教学。为此,我们项目组设计出一款能够真正让学生学以致用的,基于虚拟现实仿真技术来达到学生真正学习的软件,该软件能让学生在虚拟的仿真场景中,与答题相结合的形式,从而更好的学习相应的知识。1.1 课题背景传统的建筑教学,是在完整的理论学习结束后,到具体的建设工作单位进行实习。单纯的理论学习阶段,与陌生的实习环境,常常使学生不能学以至用,教学质量得不到保证。学生毕业后,需经过相当长的时间来适应工作环境和社会生活,这造成了很大的不便。然而,随着计算机科技时代的到来,

8、人们生活水平也不断提高,运用计算机技术来改善我们的生活,成为了一种趋势所在。运用虚拟现实仿真技术,近几年来越来越多的行业已经使用到了该技术,如楼盘模拟展示、医疗器械运用展示等等。而各大高校也开始运用此技术来进行教学,其中以建筑专业为例,所需要的教学质量要求越来越高,使用虚拟现实仿真技术,则可以让学生在模拟场景中学习理论知识,真正做到将理论与实际操作相结合,让学生学的更为彻底。与此同时,软件模拟的教学环境给学生学习带来的巨大的新鲜感,让学生在体验时带来更多的学习方法。1.2 课题研究的目的和意义运用网络模拟的教学方式,根据不同的教育层次,运用的具体内容会有所差别,但形式是与外界学生就业的工作单位

9、相同或相近,以便使学生走出校门后就能马上满足工作单位的用人需求,并能在岗位上有所作为。虚拟现实仿真技术,是近几年来才开始慢慢进入人们的视线。其实这种技术在很早就已经被提出,只是实现并推广的时间很长。现在,使用虚拟现实仿真技术,是一种必然的趋势,各大行业都可以运用到。这解决了人们当今生活中,有些难以实现的地方或者是更为方便的提供人们参考或学习等。而对于本课题中的建筑教学方面,也有着十分重大的意义。其一,学生不需要再面对干枯的文字来进行答题,配合着动画进行答题,就这一点来看,就给了学生很大的一个新鲜感,从而也有了更大的学习乐趣。其二,本设计也自带了成绩管理系统,每个课题答完后,除主观题需老师评分外

10、,客观题系统可以自动给出,这也是很大的一个方便,节省了人力资源。其三,多次利用且十分方便,学生需要学习直接上机进行操作即可,也不再需要复印沉重的试卷,学生可以随时随地的根据自己需要进入相对应的课题进行学习。其四,多个课题内容可以全部糅合用一个软件来进行,但是各个课题的内容却可以很好的分开进行各自的环节,软件的内容可以做的十分的丰富。1.3 课题的主要研究工作本设计主要做了如下几方面的工作:1) 确定系统的总体课题内容和设计方案2) 运用unity3d进行逻辑上的代码处理,以及用3dmax进行场景模型制作和人物动画制作。3) 各个课题设计环节的调试与修改。本设计主要运用到了unity3d软件,3

11、dmax软件,c#语言知识以及sql数据库处理。在代码设计框架方面,根据课题的内容不同,制定出一个统一的答题框架,但凡是相对应的客观题,皆可用此框架答题。各个版块的设计根据课题内容的不同,而制作出相对应的模型与动画,实现出对应的逻辑处理等。最后再将答题结果写入数据库,以保存学生的答题数据。2 系统总体设计2.1 系统功能1. 本系统应带有答题功能与评估功能,方便学生了解到自己的学习情况。2. 本系统应带有登录功能,各自的学生成绩应该分开存入到数据库中,方便老师了解到各个学生的答题情况,从而做出相应的处理。3. 本系统中,动画与答题应相结合,在答题中尽量观看到动画效果,让学生了解到实际的场景环境

12、。4. 每个版块的内容应尽量不同,展现出不一样的环境内容。2.2 系统设计原则系统的设计结合用户的实际需求,遵循以下设计原则:l 实用性:结合建筑专业的各项专业知识,学生能够上机操作,系统自动进行考核评分,实时掌握学生的学习情况。l 可靠性:系统可以长时间运行,各设备性能可靠且运行稳定。l 先进性:系统的专业知识应当遵循时代技术的最前沿,功能和性能等都应达到最先进的水平。l 简易性:用户操作过程简捷,使用起来一目了然。l 灵活性:系统在各个电脑上都能使用,力求做到对操作系统的充份兼容性。2.3 系统结构图本系统应由sql server数据库提供数据管理功能,利用c#代码实现ui界面和3d场景与

13、人物动画的互动。具体结构图可见图 2-1。图2-1 系统结构图3 系统功能设计本系统设计流程图大致见图3-1。图 3-1 系统设计流程3.1 数据库设计在数据库设计方面,首先得先确定应建立几个表。建立的表对应如下:1. 学生登录user表,表3-1表3-1 学生信息表(user)字段说明类型(长度)id利于修改操作intusername用户名intpassword密码nvarchar(255)name学生姓名nvarchar(255)此表中,username列是存放于使用该系统的人员的用户名,password列存放的是密码,role列代表区分判断老师与学生。name列存放的是对应的名字。2.

14、学生答题的题目内容表,表3-2。表3-2 学生答题题目表(dingeceding)字段说明类型(长度)chapter单元号nvarchar(255)qid题目编号floattitle题目名称nvarchar(255)question问题nvarchar(255)options答案选项nvarchar(255)answer正确答案nvarchar(255)hint助训nvarchar(255)此表中,chapter列与qid列是为了确定题目的唯一性,title列是存放的每一小单元题目的总汇,question列是每个题目的答题内容,options列是表示本题目有多少个选项答案,answer列代表的

15、是本题目的正确答案,hint列是表示本题目的助训内容。但凡是相同类型的答题框架,都需要用到此数据表,可以再单独创建,但是每个列应与此表相同。3. 学生每题答题结果表,表3-3。表3-3 学生答题结果表(qresult)字段说明类型(长度)id便于修改intexamid考试批次floatsid学生用户名intcid课程编号intqid题目编号nvarchar(255)examdate考试日期datetimeresult分数结果floatunit单元名称nvarchar(255)chapter单元nvarchar(255)此表中examid列代表的是学生每次进入该系统的批次,sid列代表的是学生的

16、用户名,cid列代表的是答题课程的编号,qid和chapter列依然是确认题目的唯一性,examdate是代表本次答题的时间,result列是题目对应的分数,unit列是单元的名称。4. 学生课程总分表,表3-4。表3-4 学生答题结果总分表(cresult)字段说明类型(长度)id便于修改操作intcid题目课程编号intsid用户名intexamid考试批次floatexamdate考试日期datetimeresult分数结果float此表中cid列代表的是课程的编号,sid代表学生的用户名,examid代表学生的考试批次,examdate代表该课程考试的时间,result代表的是本次课程

17、考试的总分。3.2 登录界面设计登录界面的程序设计,大致的方向可以遵照此流程图 3-2。图 3-2 登录界面设计流程在创建unity3d工程后,新建一个scene场景,先导入ngui插件,再导入我们需要进行排版的图片。在界面设计上应尽量遵循排版美观的原则,官方unity3d自带的ui系统,在处理ui界面上相对麻烦,所以需使用ngui插件,更为方便我们进行ui界面的设计与处理。导入插件后在unity工具栏上会多出一列ngui,再依次点击createtexture,于出现的ui界面中,将我们刚已导入的图片换置右方的inspector列表中的texture上去。我们导入后的所有文件皆在project

18、栏目里面。界面的设计中上方放入学校的名字与本系统的名称,可以做一些颜色的处理,文字添加方式依旧是ngui-create-label。于右方的inspector中进行label的细节处理,在gradient里勾选对话框,再进行top与bottom的调色,文字颜色设计尽量上方偏深蓝色,下方偏淡蓝绿为主,文字输入于右方的text中进行更改。输入框的导入在projcet列中搜索input,将后缀为prefab的预置体拖入到scene场景中对应的位置即可。点击运行后,于game场景中就可在刚放入的input里输入文字了。 在需要进行点击的“登录”一栏上,需要添加box collider,于scene中对

19、应的位置右键-attach-box collider,再于右方的inspector的最下方点击add component,于出现的对话框中输入button并点击,于是此登陆框就有了触碰效果。文字图片进行排版后的效果图大致上见图3-3。图 3-3 登录界面然后在逻辑处理上,我们需要添加脚本,否则这个界面只能观看而没有任何作用。在hierarchy栏里依次点击create-create empty,点击新出来的物体gameobject,重命名为login,方便我们修改检查。再于右方的add component中进行添加脚本,new script,双击脚本。新创建的脚本代码见图 3-4。图 3-4

20、新建c#语言脚本登录代码设计流程见图 3-5。图3-5 登录代码流程首先连接数据库,新创立脚本,名字更为creatsql,并放入一创立的新空物体上,空物体命名为login,数据库的连接代码部分如下。string connectionstring = string.format(server = 0;database = 1;user id = 2;password = 3;,host,database,id,pwd);dbconnection = new sqlconnection(connectionstring);dbconnection.open();debug.log(connecte

21、d to database);host变量代表的是数据库的ip,我们可以输入localhost,即代表本地。database代表的是数据库的名称,id和pwd分别指的是数据库的用户名和密码。debug.log,用于控制台输出,是否连接成功。以上代码放入图 3-6的 void start()函数里。除此之外,数据库代码需要在开头进行引用,在代码的开头输入如下代码。using system.collections;using system.data;using system.data.sqlclient;输入完成后,ctrl+s进行保存后,点击unity3d中的播放按钮进行调试,看控制台是否有输出

22、connected to database,没有则需要继续调试。数据库连接上后,再需要获取到用户输入的用户名和密码。同样我们需要再新建一个脚本防止混淆,也便于修改,命名为login_start。获取用户输入的信息代码如下。public uilabel _username;public uiinput _password;public static string _username_only; public static string _password_encryption; public void onlogin()_username_only=_username.text;_passwor

23、d_encryption= md5sum(_password.value.tostring();public string md5sum(string input) md5 md5 = new md5cryptoserviceprovider();byte bytes = encoding.utf8.getbytes(input);bytes = md5.computehash(bytes);md5.clear();string ret = ;ret = md5 + system.convert.tobase64string(bytes);return ret;变量_username_only

24、代表的是用户的用户名,_password_encryption是代表的密码,md5sum函数是用来进行加密处理。获取到了用户名和密码后,再将两者与数据库里的用户名和密码进行匹配,匹配的代码如下。string sqlcmd = select * from user$ where username = +double.parse(_username_only) + and password =+_password_encryption+;sqlcommand cmd = new sqlcommand(sqlcmd,creatsql.dbconnection);sqldatareader reade

25、r = cmd.executereader();if(reader.read() /判断是否找到 application.loadlevel(main);elseui_wrong.setactive(true);reader.close();代码设计中使用select语句,可以方便的查找并通过返回结果进行判断。如果判断成功,则进入下一场景,否则则提示密码错误。3.3 版块内容设计根据图3-1的流程图,登录后的主场景中,需要能进入4个不同的课程场景中,进入不同的场景需要用一段代码application.loadlevel(场景名称)。于是在界面排版上我们需要标示出4个模块,并用文字放于上面给予提

26、示。基本的排版操作都大致相同,排出后的效果图见图3-6。 图3-6 登录后主界面为了使本系统设计更为人性化,在图上方的右上角给出了几个标示。其一是显示出了该学生的姓名与日期,可以明确的告诉学生今天的考试时间与是否登录的是自己的账号。其二是显示出了进入此系统开始后所使用的时间,类似于一个计时系统,但是没有时间规定,这个可以根据需要设计出来,并且也并不复杂。其三是右上角的退出按钮,点击后就退出到最开始的登录界面。在逻辑方面的处理,都需要用代码进行控制,学生的姓名和日期的获取代码如下。public static string date; /日期string year;string month;str

27、ing day;public static string stu_name; /学生姓名void start () year=system.datetime.now.year.tostring();month=system.datetime.now.month.tostring();day=system.datetime.now.day.tostring();date=year.tostring()+/+month.tostring()+/+day.tostring()+;string mysql= select * from user$ where username=+login_start

28、._username_only+;dataset user = creatsql.getdataset(mysql);stu_name=user.tables0.rows04.tostring();c#语言中可以获取系统时间,ststem.datetime为系统时间,做一下处理,将时分秒给去除掉即可。而学生的姓名则是应该放在登录界面中获取到。学生点击登录后,在application.loadlevel(场景名称)代码之前获取到学生的姓名。将数据库里的name列获取到即可。3.3.1 施工工艺实训室设计从主界面点击各个板块进入到各课程里面,施工工艺实训室流程图见图 3-7图 3-7 施工工艺设计

29、流程图点击图 3-6中的“施工工艺实训室“进入到此版块的内容,这里面的内容多少,可以根据需要来进行划分。此版块设计是分为了几个其它的小版块,里面的内容不同,且场景动画也不一样。在相关设计中,我们由美工提供了一个已经做好的动画模型放入到相对应的场景中。美工使用3dmax打包成fbx文件后,我们导入到unity3d中,在project视图里生成了对应的prefab文件,我们只需直接将模型拖到下方的hierarchy视图中,在scene就可以生成相应的3d模型了。有的模型有动画,而有的没有,所以在开始设定的时候,我们需要在模型的inspector视图中,找到对应的animation状态栏,将里面的a

30、nimation动画更改为美工提供好的静止的动画,或者将animation列设置为none。在界面排版上,我们需要做出相对应的工具栏,每个工具栏都代表着场景中模型的一个动画。根据需求的多少,就制作出相应多少的工具栏。点击工具栏中的工具,然后再放入界面中的白色方框中,即可看到界面里相应的动画展示。然后再点击下一工具栏继续,接着会出现另一个动画展示。出于人性化的考虑,我们在左下方会给出提示栏,以方便同学不太清楚的地方,可以参考左下方的提示栏了解相关的操作等。当工具栏里的工具使用完后,即可点击右上方的退出按键,再进入别的场景里进行学习观看。界面设计方面,首先是需要设计三个方框uisprite进行判定

31、,uisprite由ngui-create-sprite创建,一个是放入工具栏,一个是放入白色框,最后一个是鼠标框。工具栏是对应的图片放入其中,当鼠标点击时,取消掉工具栏里的图片,再将鼠标框里的图片更改为鼠标点击的图片,这个就需要判定一下鼠标点击的图片是哪一个。然后再将鼠标放入白色框中点击,接着才会出现界面中的相应动画。同时白色框也需要进行判定,因为具体的工具栏是对应的不同的步骤,只有对应的步骤对上了,才会出现动画。这样的设计是防止系统出现紊乱以及学生乱点,按照步骤一一点下来即可看完整个动画流程。代码部分如下。public uisprite cursor;public uisprite ico

32、n;public gameobject label;public void changecursor () if (!gameobject.getcomponent ().value) cursor.atlas = icon.atlas;cursor.spritename = icon.spritename;icon.enabled = false;label.setactive(false); else cursor.atlas = null;cursor.spritename = null;icon.enabled = true;label.setactive(true);public v

33、oid onclick () changecursor ();同时在各个点击后出现的动画方面,我们也做了一个摄像头跟进与后退的一个人性化处理,以方便学生观看动画的地方更为仔细。并且,我们给鼠标也做了一个旋转的设计,就是在空白处点击鼠标左键进行旋转,可以从不同角度观看到场景,滚轮可进行放大缩小,但是有一定的限制。这些设计也需要一定代码知识,有的难点也需要从网上参考下别人的方法。别的内容场景的具体方法类似,新建立一个scene场景,只需要更换场景动画和工具栏里的内容,以及相应的判断更改下即可。本块内容没有放入答题,全为动画效果展示。版块部分内容效果可参考图 3-8。图 3-8 施工工艺效果图3.3

34、.2 定额测定实训室设计定额测定实训室设计的运行流程图大致如图 3-9。图 3-9 定额测定设计流程此版块内容设计,由于需要运用到数据库内容,所以我们需要将数据库的内容一一展示到ui界面中来,每一行数据对应着一个答题框架。直接在hierarchy里create-ui-text,依照数据库内容依次排版出对应的答题框架,建立数目一样的text文字。而在代码方面就是需要获取到这些text脚本,并且将数据库里的内容与text里的内容一一对应上,整个答题框架的内容我们名为questionui,代码详情见附录。ui界面上,于排版的右方使用ngui添加uisprite,命为projectschedule,再

35、给projectschedule添加uiplay tween脚本和tween position,并将名字命为定额测定,再于场景右方添加三个uisprite,分为对应着本单元内容的三个小内容,也需要添加uiplay tween,于这四个sprite上的tween target上添加projectschedule与box collider,这样在运行时每次点击定额测定,即可对应着出现右边对应的三块内容。此内容设计采用的是边答题,边观看动画的形式。此内容的动画效果相对而言较少,单纯的做动画效果也显得十分枯燥。在这里我们将对应的答题内容与动画结合起来展示,方便学生更好的学习。答题模式依照的本章节内容中

36、的3.4答题模式设计。3.3.3 园林工艺实训室设计园林工艺实训室设计,大致上与定额测定的方式类似。但是尽量应做一个不一样的动画,于是需要用animation系统,做出一个摄像机移动的动画。ctrl+6快捷键打开animation系统,或者于window-animation打开。再点击hierarchy的camera,于打开的animation系统中,点击add curve,创建新的animation文件,再在animation系统上的时间节点上进行双击,再于左边的position与rotation根据自己的需要进行修改,界面中时间的长度即为此动画播放的长度,位置的更改代表着移动的位置更改,s

37、ample的大小代表着动画移动的快慢,编辑后的效果图可见图 3-10。图 3-10 动画制作工具园林工艺实训室在场景设计方面,我们把场景模拟的更加的美观了一些。此版块的答题框架设计沿用的是上一个答题框架,由于此版块内容不多,动画也不多,所以设计方面更多的偏向于场景的设计。而在动画也仅仅只是一个旋转或者前景等,目的是为了让学生从各个方面形象的观看到所需要学习的内容。镜头前进的动画效果截图可见图 3-11。图 3-11 场景动画3.3.4 造价控制实训室设计本内容设计流程图见图3-12。图3-12 造价控制设计流程此版块内容设计,更多的偏向于人物的移动方面,因为造价控制更多的是向学生展示一个工程建

38、设过程会发生的哪些情况。例如施工方提出变更,建设方提出变更等等,展示的是这一个变更过程的流程是怎样的。可能在动画方面做的相对粗糙一点,而且人物间对话也只是简单的用ui框来进行展示。在程序方面则更多的偏向答题的框架怎么设定,人物的移动和动画怎么衔接等等。运用unity3d自带的人物导航系统,window-navigation,再在人物移动的地面上点击一下,于右方的navigation视图中,勾选navigation static,再于下方点击bake进行烘焙。于scene视图中可以看到分布的一块蓝色的区域,代表着人物可以在此区域上进行移动。应用一句代码,物体.setdestination(位置的

39、坐标),那么此物体即可移动到相应位置。为了展示出不一样的内容,于是这一块内容没有沿用上一答题框架,而是又单独根据需要设计出新的答题框架。场景人物依然是根据答题的不同来进行不同的内容切换。这里运用到的新的技术点则是unity3d自带的人物导航系统,以及人物动画的切换播放。在此过程中,由于场景里的人物需要来回的递交信息,但是人物的动画都是各自分开的,所以在播放的时候需要切换使用,并且得按照场景里的人物是否走到了相应的位置进行判断,才能进行相应的人物动画处理,所以此内容进行的十分麻烦且繁琐。有些场景需要学生来回点击进行观看,所以需要在人物上,动画上,以及位置坐标上等等进行初始化处理。设计过程需要一定

40、的时间来完成。而答题的内容也是穿插在动画里面,所以到达一定的时间后进行判断,跳出相应的答题框等也需要进行设定。而当答题开始时,动画也应不再继续相关内容的移动等。这里就需要做个停止的处理。有些题目内容太多,导致ui界面放不下,所以我们又进行了一个处理,将答题题目放入了word文档中,答题时word文档自动跳出,这也是一个技术的实现。并且word文档的位置路径也需要设置清楚,否则是无法打开的,这个得放在本设计的工程目录下,到时候打包生成exe文件也可以找到相应的位置。本版块内容效果图见图 3-13。图 3-13 造价控制效果图3.4 答题模式设计为了使答题更为方便,于是我们设计出一个通用的答题框架

41、。先使用unity3d自带的ugui系统进行答题界面的排版,答题框架里的内容设计应与数据库里的答题表的结构一一对应,答题界面中大致所包含的内容分为答题的小单元名称、题目的名称、有多少个选择项和助训。关于数据库题目对应方面,首先用代码找到场景中各自对应的框架,标为各自的变量。再连接数据库,将数据库里的内容一一赋值给这些变量,点击提交按钮后,再将数据库中的qid加1,即可跳转到下一个题目。将场景中的答题框架在代码中用变量表示,其中一部分代码如下。_title = _questionui.transform.findchild(title).getcomponent();_content=_ques

42、tionui.transform.findchild(content/gridlayoutpanel/text).getcomponent();transform opt1obj = _questionui.transform.findchild(option1);_opt1 = opt1obj.getcomponent();_opt1text = opt1obj.findchild(label).getcomponent();transform opt2obj = _questionui.transform.findchild(option2);_opt2 = opt2obj.getcomp

43、onent();_opt2text = opt2obj.findchild(label).getcomponent();transform opt3obj = _questionui.transform.findchild(option3);_opt3 = opt3obj.getcomponent();_opt3text = opt3obj.findchild(label).getcomponent();transform opt4obj = _questionui.transform.findchild(option4);_opt4 = opt4obj.getcomponent();_opt

44、4text = opt4obj.findchild(label).getcomponent();_hintobj = _questionui.transform.findchild(hint/gridlayoutpanel/text).gameobject;_resultobj = _questionui.transform.findchild(result).gameobject;_submitobj = _questionui.transform.findchild(submit).gameobject;_nextobj = _questionui.transform.findchild(

45、next).gameobject;_nexttext = _nextobj.transform.findchild(text).getcomponent();当找到了这些变量后,再将数据库里的内容一一赋值给这些变量。当点击下一题后,对应的答题内容中,设计是将数据库中的qid列自加1,则跳转为了下一题内容。而对应的内容所需要做的动画,需要public两个变量,一个对应题目的开始动画,另一个对应的题目的结束动画。新建一个脚本,public两个函数,函数名输入到对应的onnewquestion和onsubmit中,分别代表答题开始所需要做的内容和结束所需要做的内容。public list _onne

46、wquestion = new list();public list _onsubmit = new list();答完题目后,再将本题目的答题结果插入到数据库中的qresult列中,用sql语句insert。代码如下。insert into qresult (列名1,列名2)value(值1,值2);答题模式的效果图见图3-14 。图 3-14 答题模式界面3.5 评估系统设计评估系统放于右上方的退出按钮中,设计思路是将qresult表中对应的数据分数累计起来,select根据examid,用户名和result分数列三者来确定唯一性,查找出有多少个后再累加相乘起来,即为学生的分数,再将分数插

47、入到creuslt表里面,即对应的学生课程内容的成绩。插入成绩前会给出一个判断,select查找creuslt表里面是否已经包含了此课程的答题信息,如果已经有了则提示已插入,没有则正常插入信息。对应的评估系统代码如下。string flag_num=select count(1) from qresult$ where sid =+double.parse(login_start._username_only) + and result =+2.78+ and examid=+double.parse(login_start.examid);sqlcommand _cmd = new sqlc

48、ommand(flag_num,creatsql.dbconnection); int num= int.parse(_cmd.executescalar ().tostring(); /判断选择题正确个数float sum=float.parse(num*2.78f).tostring(f1); /分数保留1位小数string flag_exist=select * from cresult$ where sid = +double.parse(login_start._username_only) + and examid =+double.parse(login_start.examid

49、)+and cid=14576;sqlcommand cmd = new sqlcommand(flag_exist,creatsql.dbconnection);sqldatareader reader=cmd.executereader(); /判断examid 是否存在if(!reader.read() /不存在 则insertreader.close();string insert=insert into cresult$(cid,sid,examid,examdate,result) values(+14576+,+double.parse(login_start._username

50、_only)+,+double.parse(login_start.examid)+,+login_start.date+, +sum*1.0f+);sqlcommand mycmd = new sqlcommand(insert,creatsql.dbconnection);mycmd.executenonquery();评估系统界面见图 3-15。图 3-15 评估系统界面4 系统测试软件全部设计完后,就需要进行打包发布文件了。点击file-build settings,再将我们添加过的所有的scene场景拖拽到scenes in build里面,再选择platform里的pc端,点击bu

51、ild,再输入文件名进行保存,等待unity3d进行打包。打包后的文件在对应的路径里分为两个文件,一个为exe文件,另一个为date文件,两个需要在一起才能使用。点击exe文件进行运行,于出来的对话框中点击play,那么就可以进入到此客户端中了。本次系统设计还是会存在很多的问题,在数据库连接应用以及sql语句方面,始终不是太为熟练,以及还有一些代码,也必须要经常在编写的过程中进行调试,很少能做到一步到位。初拿到这个项目时,是非常棘手的,因为毕竟有很多知识点毕竟缺乏,以及一些功能运用的也很不到位,且使用起来也十分生疏,表达的效果也很一般,但是毕竟也算是都琢磨出来了,也还是比较有成就感。在调试方面

52、主要遇到的问题有以下这些:1.数据库方面运用不是特别熟练,创建表格方面也修改了多次,字段的类型也是一直在不断的修改。而在连接数据库方面,也需要上网去查找相关的文献资料,而在遍历数据库方面,本来是不需要遍历数据库的,只需要一句select语句通过返回结果就可以了。但是初始思路是想要遍历数据库,所以在执行效率上有很大的不便。而在初始界面上,就需要在后面使用过的变量进行初始化,这些最开始设计都没有想到。2.答题框架的设计无法驾驭,此框架是通过主程人员编写从而来使用的,自己是无法写出这么精炼的代码,并且能够做到通用的处理。没有个三五年工作经验是无法一下子就写出这么优秀的代码。3.人物动画移动方面使用的

53、太过繁琐,但是也没有找到更为出色的方法,当然也没有多余的时间去研究。主要是通过float在update函数里面进行自加,截取每个时间点,再做出相应的动画或者处理。单纯用float在update里面自加,这个方法就十分的不便,给系统内存造成了很大的损失。4.unity3d运用的还是不太熟练,在界面的操作排版上,总是有这些或者那些的小的细节的失误,总是在排版上的效果使用的不太好看。ngui插件使用的也不太熟练,有些排版上,需要花上半天的功夫,这给项目的进展也造成了很大的延误5 结论与展望用软件模拟出现实中的教学场景,是近几年来教育行业的一个创新。很多高校学生理论知识十足,而实际操作上面却十分的缺乏,本软件很好的解决了这一缺陷。我们在软件里模拟出了,学生在实际操作中所见到的场景与工具,很好的为老师教学提供了帮助。与此同时,本软件也结合了答题模式,并且也有相对应的各个单元的答题结果处理。每个单元都有各自的答题成绩,学生可以很好的在本软件中,将答题与实际操作相结合,可以学习的更为透彻。但是,本软件毕竟是模拟的,所以与现实场景中或多或少有一定的不同,并且在人物模型与场景模型动画等方面,有一定的缺陷,但是大致的方向基础上是正确的,可以看得出所要表达的思想。并且,一个好的仿真系统,一个人是完成不了的,必须由一个团队来进行,所以需要耗费一定的人工与时间。而在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论