基于Unity引擎的多人合作休闲类游戏的设计与实现_第1页
基于Unity引擎的多人合作休闲类游戏的设计与实现_第2页
基于Unity引擎的多人合作休闲类游戏的设计与实现_第3页
基于Unity引擎的多人合作休闲类游戏的设计与实现_第4页
基于Unity引擎的多人合作休闲类游戏的设计与实现_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

摘要□□本文使用了Unity3D引擎对一个多人合作休闲类游戏进行了设计和实现,游戏使用了第三人称俯视视角。文章中主要包含了游戏的系统分析和整体设计部分,各个模块的实现方法,以及最终的游戏测试部分。完全实现了游戏的联机功能与多人合作休闲类游戏的基本架构。该游戏采用了角色控制状态机与交互取值算法、移动策略和人工智能交互等关键技术.针对如何改善游戏运行时的工作效率问题,提出了使用协同程序技术实现预先式同步数据读取.将协同程序技术应用在地图预读取中,使漫长的地图读取过程可以在运行期的“闲时”进行处理.效能分析实验证明了该优化方法有效降低了程序时间复杂度,有效解决了游戏运行时的实效性问题。□□关键词:网络游戏多人游戏休闲类游戏Unity3D引擎地图预读取交互取值算法协同程序技术Abstract□Inthispaper,theunity3Dengineisusedtodesignandimplementamultiplayercooperativeleisuregame.Thegameusesthethirdpersonperspective.Thispapermainlyincludesthesystemanalysisandoveralldesignofthegame,theimplementationofeachmodule,andthefinalgametestpart.Ithasfullyrealizedtheonlinefunctionofthegameandthebasicstructureofmultipersoncooperativeleisuregames.Thekeytechnologiesofthegame,suchasrolecontrolstatemachineandinteractivevaluealgorithm,mobilestrategyandartificialintelligenceinteraction,areadopted.Aimingathowtoimprovetheworkingefficiencyofthegame,thecollaborativeprogramtechnologyisproposedtorealizethepresynchronousdatareading.Thecollaborativeprogramtechnologyisappliedinthemapprereading,Thelongprocessofmapreadingcanbeprocessedinthe"idletime"oftherunningperiod.Theefficiencyanalysisexperimentprovesthattheoptimizationmethodeffectivelyreducesthecomplexityoftheprogramtimeandeffectivelysolvestheeffectivenessproblemofthegamerunningtime.□□Keywords:NetworkgameMultiplayergameLeisuregamesUnity3DengineMapprereadingInteractivevaluealgorithmCollaborativeprogrammingtechnology目录1.绪论 11.1开发背景及意义 11.2论文架构 12.游戏开发技术 32.1游戏引擎介绍 32.2C#介绍 32.3系统开发运行环境 33.游戏系统与技术分析 43.1游戏基本介绍 43.2系统与技术分析 53.3场景模型的搭建 83.4地图以及人物说明 84.游戏设计与实现 104.1游戏界面设计 104.2游戏人物设计 124.3游戏功能设计 134.4游戏场景搭建 344.5游戏服务器搭建 354.6游戏的导出和安装 415.游戏测试 476.结论 51参考文献 52致谢 53绪论1.1开发背景及意义近些年来,人们的生活节奏变得飞快,工作压力也随之增大,为了能更好地从事工作生产,他们迫切需要一些既轻松又能解压的方式来缓解不断产生的焦虑和躁动。这些方式有很多,有的人听歌,有的人做运动,有的人看视频,还有的人玩游戏等等。然而游戏的前景却可以说是最好的,因为它完全可以包容前面三种方式,诸如主打音乐节奏的音乐游戏,锻炼身体的VR/AR体感游戏,代入感极强的视觉小说类游戏。而这些游戏根据其较为轻松的操作强度及宽泛的适用场景,通常都归属于休闲类游戏的范畴。另外由于移动网络的发展和WIFI的大量普及,强调多人合作的移动端手游的发展使得休闲类游戏的便携性和可玩性大大提高。当然,移动端的多人合作休闲类手游的发展带来大量可观的利润的同时,也带动了常用的游戏开发引擎之一Unity3D的插件库和素材库的日益完善,开发游戏的时间成本和金钱成本也大大降低。Unity3D是随着近些年虚拟现实技术和第三代互联网技术的逐渐成熟而流行起来的一个游戏开发引擎,而且Unity3D的游戏开发成本低,并且周期短,市场需求大,业界对Unity3D引擎开发游戏的前景也是普遍看好。尽管已经有不少高科技人才选择从事Unity3D游戏行业,Unity3D移动游戏市场的需求量的爆发式增长还是造成了Unity3D游戏开发人才的大量不足,因此Unity3D游戏开发的高级人才是非常受各大公司青睐的。乐观积极的前景,源源不断的投资以及高薪高福利且极富挑战性的工作,使得Unity3D游戏开发的发展走向了一个良性循环。运用Unity3D开发的多人合作休闲类游戏,多名玩家通过网络在虚拟的环境下对人物角色进行操作,以达到多人在线游戏娱乐。由于玩的时间不受限制,游戏种类多,游戏设置简单易懂,深受玩家的喜爱,并且由于手机的普及以及人们为了消除平时工作和生活的乏累,玩这类游戏的玩家越来越多。多人合作休闲类游戏可以让玩家在闲暇之余与朋友一起游玩的方式得到身心上的放松,拉近朋友之间的距离,让人保持身心愉悦。此类游戏上手快,操作简单,不需要长时间进行,有较高的娱乐性,符合大众的游戏审美与放松身心的需求。因此,多人合作休闲类游戏是一个不错的切入点。1.2论文架构本课题通过C++架设服务器以实现多人同时在线,基于Unity3D引擎进行游戏客户端的设计与开发。游戏主打的是多人联机完成游戏任务(对战或合作)的模式。为了改善程序运行时效率,提出了预先式读取策略,该策略主要用于解决漫长的地图读取过程的问题.通过在程序运行的空闲状态中,预先读取接下来可能到达的地图数据,从而降低了程序的时间复杂度,以增强游戏体验中的实效性。论文将从开发原理,游戏需求分析,游戏设计与实现以及游戏功能测试四个维度来完整描述该游戏。2游戏开发技术2.1游戏引擎介绍Unity3D是由UnityTechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity3D类似于Director,Blendergameengine,Virtools或TorqueGameBuilder等利用交互的图型化开发环境为首要方式的软件。其编辑器可运行在Windows、Linux(目前仅支持Ubuntu和Centos发行版)、MacOSX下,可发布游戏至Windows、Mac、Wii、iPhone、WebGL(需要HTML5)、Windowsphone8和Android平台。也可以利用Unitywebplayer插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac所支持。2.2C#介绍C#是微软公司发布的一种面向对象的、运行于.NETFramework和.NETCore(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员AndersHejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETwindows网络框架的主角。2.3系统开发运行环境服务器:阿里云学生服务器(1核CPU、2GB内存、CentOS7.364位、1Mbps带宽)操作系统:Windows10Professionalx641909CPU:i5-6300HQ显卡:GTX960M固态硬盘:三星PM981PCIENVME(256GB)机械硬盘:HGST7K10001TB7200转32MBSATA3内存:DDR416GB2133mhz显示器分辨率:1920*1080所需软件:Unity3D2018.4.13c1(64-bit)、VisualStudio2017Personal、MySQL5.7.28、NavicatPremium12、WinSCP、PuTTY(64-bit)、Notepad++3游戏系统与技术分析3.1游戏基本介绍游戏定义为多人在线RPG竞技休闲类手游。游戏分为剧情闯关模式(可单机或多人合作)多人竞技模式。剧情闯关模式:玩家通过完成设定好的任务条件,通关关卡,获得经验金币道具等,并开启下一个关卡。多人竞技模式:目前制定2个玩家互相作战,游戏中每15秒地图上将会出现道具,互相攻击到只剩下一个人即可完成任务,获得经验和金币。剧情闯关模式游戏连接采用简单交互(弱连接)的方式。多人竞技模式游戏连接采用帧同步的方式。多人竞技模式连接方式采用TCP连接。关于剧情闯关模式主线的梗概:故事发生很久很久以前在一个与世隔绝的小岛,岛上险象环生,有各种强力怪物出没,岛上还有以拥有制作泡泡炸弹闻名的部落,名叫泡弹联萌。怪物们慑于强大的泡弹威力,双方长期以来处于互不侵犯的友好局面。然而这个部落随着时代的推移,一些重要的技艺渐渐失传,泡弹的威力也是与日俱减。到了主角这一代,部落对愈发强大且蠢蠢欲动的怪物显得力不从心,部落存亡出现前所未有的危机。一天,部落里天赋异禀的主角外出使用自制的泡弹挖矿时,意外炸开了一个藏有藏宝图的隐藏山洞。主角将其交由族长查验后,才发现这是一份藏有失传多年的镇族之宝——泡泡龙的藏宝图。在得到族长的授意后,勇敢机敏的主角便迫不及待地叫上同族乡亲组织一场声势浩大的寻宝探险,于是在这场分头行动的寻宝探险中,到底谁能最先在怪物的重重包围中突围,顺利拿回失传多年的镇族之宝,重振泡弹联萌的辉煌呢?图1剧情3.2系统与技术分析本文提出的游戏系统结构如图所示,服务端使用的是阿里云服务器,通过C++脚本在Unity3D客户端和云服务器MySQL中架桥,需要速度的地方均用纯C编写,部分地图/日志处理工具用Perl语言编写,客户端使用Unity_C#编写。最早使用客户端服务端状态同步的方式(由服务端虚拟构建游戏场景防作弊),后改用帧同步方式优化体验。地图早期编写地图编辑器,后使用Tilemap来提升效率,将生成的文件直接读取tmx文件内数字的方式来生成地图。由于编写期间有以上大幅度改动,服务端大量代码冗余,冗余部分已经切到app/bin/backup中保存,为以后写代码供提取和参考。图2系统结构游戏功能点大致分配如下:1、账号服务功能游戏提供最基本的账号注册和账号登录功能,不同的客户端玩家可以通过服务器发送或获取玩家基础信息2、音乐音效功能游戏开始音乐就自动播放,游戏暂停与结束时音乐相应消除。游戏音效随着游戏进程来触发相应播放停止逻辑。3、我的物品功能游戏提供道具栏,人物基础信息的查询,玩家可查询自己所拥有的道具及人物等级等信息4、退出/返回功能游戏可在左上角或右上角点击按钮触发退出游戏或返回上一页的功能5、单人游戏难度选择功能单人游戏难度选择界面设置在程序运行开始时,一共有三种难度供玩家选择,每选一级难度,都会相应地显示出代表该难度的图片。开始时不设置任何默认的难度6、单人游戏选关功能单人游戏开启选关功能,最初只能选择第一关,其余关卡为锁定状态,玩家只有达成指定条件才能解锁下一关7、单人游戏计时功能单人游戏需要达成指定条件才能解锁下一关,其中时间限制是重要一环,因此需要时刻提醒玩家剩余时间8、游戏属性栏游戏中会不定时不定位刷新各种强化资源,如增强火焰强度,扩大火焰范围,提高玩家速度,增多炸弹个数,恢复当前生命等,因此需要属性面板来统计当前角色能力9、游戏强化资源刷新和获取游戏中会不定时不定位刷新各种强化资源,如增强火焰强度,扩大火焰范围,提高玩家速度,增多炸弹个数,恢复当前生命等,因此需要对资源刷新位置,刷新频率等进行设置,另外我们获取强化资源时,还需要销毁该资源,并把属性加成效果变更到属性栏中10、游戏加载地图游戏需要将制作好的地图进行读取和加载进游戏中,包括但不限于地图层级,地图定位,地图块切割,地图块选取等11、玩家控制器玩家控制器用于在游戏中操纵角色进行选择、移动、投放炸弹、拾取道具等操作,这是游戏的核心功能之一12、怪物生成及走路AI怪物生成用于在游戏场景内部定量不定点生成怪物实例,而怪物走路AI用于单人游戏模式,分为直行路,二岔路和三岔路三种情况。此处为游戏设计的重点,越高级的AI越智能13、碰撞逻辑碰撞逻辑基于玩家与物体,玩家与玩家之间的碰撞交互上,这是游戏的核心功能之一。如触碰怪物会掉血,触碰砖块会无法前进,炸弹不可破坏墙体,炸弹可破坏脆弱的箱子,炸弹可伤害怪物,炸弹可伤害玩家等等14、对局结算每完成一次单机/多人模式游戏,均需要更新玩家的一些数据,如对局奖励金币,对局经验值,对局所获道具,单机解锁关卡条件判断等15、多人游戏创建房间多人游戏需要创建房间,创建房间包括房间名,房间人数,房间地图,房间模式等等16、多人游戏加入房间多人游戏需要加入房间,加入房间在玩家选择合适条件房间的基础上进行玩家与玩家间的数据连接17、网络服务网络服务解决的是玩家数据的上传和获取的问题,这些数据主要有玩家注册/登录,玩家道具栏,玩家基础信息,玩家属性栏,实时刷新的玩家位置,玩家创建房间,玩家加入房间,玩家联机对战,玩家对局结算等3.3场景模型的搭建Unity3D引擎是搭建虚拟漫游世界的一个平台,此平台可以完成对场景元素的编辑、汇总和整合,但对于场景模型、贴图、动画等元素的基础和细节却无能为力,同时虚拟漫游时也就存在一些兼容问题、比如模型不符合规范不可用、加载场景需要过多时间、场景变换滞后、出现闪烁现象等等,因此必须借助于三维软件。场景模型的构建技术,可以归为以下几种情况:(一)基于模型软件生成技术目前市场上有很多建模软件,例如3DMax、Maya、C4D等等,在虚拟场景漫游中属3DMax最为常用,该软件提供了多种建模技术与建模指令,可以展现复杂精细的模型。(二)基于图像的构建技术该技术核心就是运用图像来代替几何模型。通过图像的图形绘制技术预置一些图像来生成不同视点处的场景画面。这些图像的来源既可以是软件合成,也可以是航拍等实际拍摄的画面。对资源要求不高可以在个人PC,与拍摄设备的基础上实现,真实感较强。(三)基于三维几何图形的技术利用编程语言运用三维图形绘制的函数,通过这些函数可以很方便的实现三维图形的绘制,包含俩个部分,分别是图形建模与实时的图形渲染。本游戏使用的素材资源大部分来自于网上共享资源,一部分采用建模软件,制图软件等工具制作。3.4地图以及人物说明本游戏地图早期编写地图编辑器,后使用Tilemap来提升效率,将生成的文件直接读取tmx文件内数字的方式来生成地图。单人/多人模式地图均为模板,可扩展,扩展一个关卡仅需几分钟,地图绘画简单,使用Tilemap直接绘画。生成地图分为以下几个步骤:1.用Tilemap画地图,放到指定文件夹中2.去文件夹中拷贝level_1.scene->level_2.scene3.在build中加载level_2.scene4.设置map中的地图属性,注意总宽高设置各+15.放置物品怪物人物,注意高度+16.更改音乐7.测试运行关于人物,目前游戏开放了两个角色小蓝人和小红人,后期还会在商城上架绿胖墩和红胖墩等高级角色。小蓝人和小红人各项属性一致。4游戏设计与实现4.1游戏界面设计游戏主要界面如下:Scene1图3登录/注册界面,游戏开始时的界面Scene2图4场景选择界面choose_persional_game图5选择关卡界面。room_list图6房间列表界面in_room图7房间内部界面4.2游戏人物设计游戏人物取自于网上搜集的素材,目前设计了两个角色小蓝人和小红人,怪物分为水果怪和鳄鱼怪两种,关于实际效果如下图所示,怪物属性主要有怪物名称,动画名称,生命值,移动速度,伤害,经验和金币。图8小蓝人图9小红人图10怪物1图11怪物24.3游戏功能设计1、账号服务功能登录页面主要用到了五个脚本:登录脚本,注册脚本,弹窗脚本,启动发送——接收线程脚本和全局变量表脚本。弹窗脚本负责在需要处理请求和接收通知的时候把窗口的位置挪到原点(0,0,0),即主相机中心点上,而不需要的时候将窗口放置到主相机不可见的地方。全局变量表脚本需要注意全局变量的数量,尤其是地图数据,子弹数据,一旦放到全局变量里,手机内存会爆满。启动发送——接收线程脚本最为重要,会在下面说明。以首页登录场景下的一个提示框为例,这个提示框挂载了Pthread脚本进行网络连接收发,该脚本包含一个收线程和发线程。主线程负责处理点击按钮,游戏暂停,播放动画的工作,而剩下这两个线程组成这个网络游戏通信的布局。目前市面上的网络游戏基本也是采用两个线程来处理信息,如果我们不使用两个线程,收这个地方会一直等待,也就无法完成正常登录了。图12网络连接网络工程里称呼实现与服务端的应用程序进行通信的网络接口为socket(套接字),socket又分为TCP和UDP,我的游戏采用的是TCP通信。我们需要先在客户端与服务端进行一个连接,成功建立连接之后,客户端给服务端发送信息并等待服务器反馈。比如我登录一个账号,我需要把账号密码发过去,再等服务端返回账号是否存在的信息,所以在服务器返回信息之前,我们需要等待,这个等待的过程就是线程的阻塞。图13TCP连接以首页登录场景下的登录操作为例,建立连接,发送信息和接收信息的部分代码如下,玩家在输入账号密码并点击登录按钮,主线程的登录脚本开始工作。我们在全局变量表脚本中定义好当前连接状态,发送状态,服务端IP,服务端端口,要发送的网络报文,网络延迟,网络套接字对象等变量后,主线程创建预先定义好的发线程和收线程,收线程和发线程属于异步处理,可以同时进行。发线程将要发送的登录信息报文进行utf-8的二进制编码打包,然后发送到服务端并开始计算网络延迟。服务端接收报文后将结果发送到收线程,收线程先设置socket连接为Blocking,即阻塞状态,也就是说当占用资源的线程没有释放资源,那么阻塞在这个临界区的线程将不能工作。然后收线程清空发送报文,停止网络延迟计算,报文解码,根据报文信息创建玩家对象的实例,玩家登录操作完成。图14开启线程图15发送消息图16接收消息图17接收消息(续)图18接收消息(续)2、音乐音效功能游戏的背景音乐只需要在加载场景的时候进行播放即可,我主要提及一下音效的插入点:炸弹爆炸,人物受伤,捡到道具,游戏失败,游戏胜利。以游戏胜利为例,先要获取游戏胜利的音效对象,然后再获取这个对象下面的音频组件,在触发游戏胜利条件后,调用该组件的播放方法,即可完成一次游戏胜利音效的播放。下面是相关代码:图19音乐音效初始化图20音乐音效逻辑3、我的物品功能游戏提供道具栏,人物基础信息的查询,脚本部分我们还需要先向服务端发一条查询的申请报文,服务端再从数据库中读取我们想要的数据,打包好后发回数据到客户端,客户端的玩家对象实例进行接收并把这些数据按照标准的格式填充到场景预设的位置上。关于界面部分,我希望实现面板会缓慢平移以及点击后放大缩小的动画效果,还需要在脚本上编写缩放和定点移动的代码。下面是相关代码:图21动画效果图22动画效果(续)图23人物属性获取和输出4、退出/返回功能关于退出功能,游戏应考虑两种退出游戏的情况的解决方案:①游戏在Unity3D编辑器上运行,即游戏在电脑端的开发测试平台上运行②游戏在安卓真机或安卓虚拟机上运行无论属于哪种情况,我们都应该主动关闭游戏服务,销毁正在运行中的线程,清理玩家占用的内存和玩家的信息,并与服务端断开连接。只有这样,我们才能保证服务器能够长久高效地运行。图24客户端退出游戏图25服务端退出游戏关于返回功能,我将其统一编写在一个脚本里,设置一个场景名变量。我们只需要将这个脚本挂载到你需要的按钮上,在按钮的组件面板上修改变量值为你所需要跳转的场景名即可成功跳转,这样节省了很多编写重复代码的时间,提高了代码的复用性。图26返回场景图27返回场景面板5、单人游戏难度选择功能我们在选择完关卡后,会弹出一个难度选择框,玩家选择任意一个难度,都会更新全局变量表中的难度系数,在地图脚本里,我们可以通过这个难度系数改变怪物的当前生命,总生命,速度,伤害,经验和金币。难度越高,获得的奖励越丰厚,相对的容错率也会大大降低,这样的设计使得游戏富有挑战性和区分度,满足了保守型和激进型两种风格玩家人群的需求。图28难度选择6、单人游戏选关功能我们在进入选择关卡的场景后,我们会看到我们目前能够进入的关卡和尚未解锁的关卡。尚未解锁的关卡是由于我们没有满足前面关卡的解锁条件而无法进入,这时候我们只需要完成前一关的通关条件即可解锁下一关了。这种设计也是为了激发玩家的挑战欲和探险精神。在代码中,我们会从服务器中查询我们目前的通关关卡数,用数组将它们保存起来再输出到场景上以实现页面的已解锁和未解锁图标更替效果。图29关卡选择7、单人游戏计时功能时间限制通常因为它带来的危机感和紧迫感能让玩家有强烈的代入感,这个设计在众多游戏中也屡见不鲜。我们希望时间是每秒都会动态更新,这时候我们会将时间计算的代码写在Update()方法里,通过总秒数这个变量来求出剩余分钟数和秒钟数,并把它显示在当前关卡顶部属性栏的显示时间的text组件中,如果时间到了,我们还需要触发游戏失败的逻辑。图30计时8、游戏属性栏首先,在加载关卡前,我们应该从服务器中获取我的角色等级以及相应等级角色拥有的属性,比如说炸弹长度,炸弹伤害,移动速度和总生命值,并把它们显示在关卡顶部属性栏的text组件中。游戏属性栏除了最开始的初始化外,我们还需要在Update()方法里时时刻刻更新它的数值,因为我们经常会在场景中捡到道具,而这些道具会直接影响我的角色属性。图31更新属性9、游戏强化资源刷新和获取游戏强化资源应该在关卡初始化的时候进行生成,而且游戏强化资源都必须放在箱子里,因此需要获取包含所有箱子的数组集合,然后检查当前箱子是否已经放入道具,如果已经有道具在里面,应该重新选择随机箱子,直到选择到合适的箱子,就把道具放进去。当我们捡到道具后,某项属性得到增强,并将这个变化体现在属性栏和实际操作中。图32强化资源生效图33强化资源生效(续)图34强化资源生效(续)10、游戏加载地图游戏加载地图首先需要找到地图资源素材,如下图右下角,然后使用TileMap工具新建一个68*64图块规格的地图(和Unity设置同步),长宽自拟,一般都不建议超过35,地图过大会在游戏运行时影响游戏加载效率,下图左侧为参考面板,中间是地图,右上角为地图层,我的游戏只需要两层即可,一层地面,一层不可破坏地砖。可破坏地砖,玩家角色,怪物,道具等都可以在脚本代码中动态生成,因此不计入地图数据。当设计好你想要的地图后,将其导出到Unity的StreamingAssets文件夹下,其后缀名为.tmx。需要注意的是,一定要导出到这个文件夹才能生效,因为在Unity工程中,放在StreamingAssets文件夹中的任何资源都将被原样复制到目标设备上的一个特定文件夹中。在任何平台中总可以统一使用Application.streamingAssetsPath属性来获得这一文件夹路径。这个文件夹是跟Application.dataPath相关联的。在desktopcomputer(MacOSorWindows)中该文件夹为为:path=Application.dataPath+"/StreamingAssets";在iOS中,该文件夹为:path=Application.dataPath+"/Raw";在Android中,该文件夹为:path="jar:file://"+Application.dataPath+"!/assets/";虽然我们可以用上述三个文件夹,在各个平台中获取StreamingAssets的位置,但是最好还是统一使用Application.streamingAssetsPath.图35地图设计导出地图文件后,我们还需要在代码中加载它才可以在游戏运行时看到这个地图,此处只截取展示公共变量和铺第一层地面的代码。铺第一层地面主要是设置一个预制体图块,样式随意。我们根据StreamingAssets文件夹下的.tmx文件的图块位置和图块样式更换预制体图块,并将它批量复制并命名后刷新在画布上,然后再更换新的预制体图块,再复制命名刷新,重复多次上述操作即可把整张地图的第一层地面完整刷新到画布中。图36地图载入图37地图载入(续)图38地图载入(续)图39地图载入(续)11、玩家控制器我的游戏采用玩家控制器分为两种,一种是键盘+鼠标操控,一种是虚拟按键游戏板操控,前者用于Unity编辑器的开发和调试,操作方式为上下左右方向键控制移动,鼠标左键放置炸弹,后者用于安卓真机测试,虚拟摇杆控制方向,虚拟按键放置炸弹。由于主要操作方式以手游为主,此处只展示虚拟按键游戏板操控的代码。图40手机按键触发图41手机按键触发(续)图42手机按键触发(续)图43手机按键触发(续)图44手机按键触发(续)12、怪物生成及AI首先我们应该先提前准备好怪物预制体,在怪物脚本中编写取得怪物在内存中的编号,更新怪物名称,取得怪物动画ani,怪物血条生成的代码,在地图脚本中写入当前地图所需的怪物数量,这样我们就能在游戏区域内随机位置动态生成固定数量的怪物实例。这些怪物在碰撞地砖或炸弹的时候,要判断有哪些点可以走。有一个分叉口,就往那个分叉口走,状态不变。碰到以后有2条路或3条路,方向随机。图45怪物生成图46怪物AI图47怪物AI(续)图48怪物AI(续)13、碰撞逻辑当怪物碰撞到玩家,玩家应该掉血,掉血量取决于怪物的伤害。当怪物或玩家碰撞到炸弹,则需要根据炸弹的伤害,怪物或玩家失去对应的血量。当炸弹炸到不可破坏墙壁,即第二地图层数组中的元素,对应方向的炸弹范围应该被阻断。人物和怪物碰到不可破坏墙壁时也应该阻断其行动。炸弹可以破坏脆弱的墙体,即脆弱墙体数组中的元素。以上方向为例,相应代码如下:图49怪物碰撞图50火焰生成及碰撞图51火焰生成及碰撞(续)图52火焰生成及碰撞(续)图53人物碰撞图54人物碰撞(续)14、对局结算判断游戏胜利需要验证游戏状态是否为结束且胜利变量为0,放下统计板,显示杀敌数,获取经验值,获取金币,停止播放背景音乐,播放胜利音效。随后玩家点击确认就开始上传获取经验值和金币的更新报文到服务器,视模式切换场景到不同界面。判断游戏失败需要验证玩家生命值是否为0且胜利变量为0,放下统计板,随后玩家点击确认就视模式切换场景到不同界面图55对局结算图56对局结算(续)4.4游戏场景搭建level_1图57第一关图58第N关(Map公有属性修改预览)后面所有关卡均复制第一关,在map中修改属性即可改变地图和难度Online_game图59网络游戏场景4.5游戏服务器搭建涉及到较多客户端——服务器交互的游戏功能设计单独写在这个游戏服务器搭建的部分。1、多人游戏创建房间创建房间需要判断是否处在多人在线状态,然后再向服务端发送创建房间的报文,服务端创建好房间后,告知客户端房间创建完毕,准许进入房间场景。图60创建房间图61创建房间(续)2、多人游戏加入房间玩家在房间列表场景中,场景应该满足以下功能:①房间分页显示;②房间每秒刷新;③按标准格式输出房间序号,标题等信息。加入房间需要判断是否处在多人在线状态,接着更改玩家属性为非房主,统一玩家的房间号,然后再向服务端发送加入房间的报文,服务端连接房间成功后,告知客户端房间加入完毕,准许进入房间场景。图62加入房间图63加入房间(续)3、网络服务如下图所示,我编写了编译脚本make.pl,看后缀名可以知道这是用perl语言编写的,编写它的作用在于帮助我们编译C++文件为动态链接库文件,再把它们批量复制并转发,最后将所有的引用库和我们的主程序my_server.cpp进行绑定,以生成最终的可执行文件my_server。另外,这些.h文件的引用顺序也在图中有所标明。图64编译脚本主程序脚本my_server.cpp的部分功能如下图所示,我们在这里设置承接函数,用于接收并处理玩家从客户端发出的请求,成功接收正确的报文格式后,我们将其进行拆分处理,取出相应的功能编号。用下图的例子,如果它为G,也就是此时玩家正处于多人模式,玩家需要定时将自己的位置发送到服务端,对面的玩家也定时从服务端获取玩家的位置,并把它显示在对面的玩家的游戏画面中,这样我们就可以实现玩家间的交互了。图65报文检测图66报文转换关于服务器的初始化部分,我们在服务器编写了game.conf的属性文件,里面写入了服务器端口号,数据库ip,数据库用户名,数据库密码,数据库名称。然后,我们就可以在主程序my_server中对它进行读取,并进行数据库初始化操作,最后启用预设的端口号,我们玩家就可以和服务端进行互动了。图67数据库属性图68数据库初始化最后,还有服务器的数据保存部分。以单机模式玩家胜利结算金币和经验为例,玩家在客户端上传包含游戏胜利和关卡信息的报文给服务端,比如说操作序号为5,关卡号为1,获得300经验,获得30金币,服务端进行接收后使用win_persional()函数具体处理数据上传问题(先检查数据来源的合法性,再更新人物、房间等事物的状态),然后在这个函数里调用update_mysql()函数连接数据库,并把更新信息写入数据库中。具体逻辑如下图所示:图69客户端发送报文图70服务端接收报文图71服务端处理报文图72服务端连接数据库图73可视化数据库4.6游戏的导出和安装①游戏客户端文件夹结构C#所有代码均在这个文件夹中Resources图片和声音素材资源都在这个文件夹中Scenes所有的场景均在这个文件夹中StreamingAssets专门用来存储tmx地图文件②游戏服务端文件夹结构App可运行服务端源码Bin可运行的服务端程序|-My_server.cpp主程序源码|-Test.cpp测试功能专用Include头文件位置|-Class.h类/结构体等|-Func.h服务端直接调用函数|-global.h全局变量|-Mysql_tools.h数据库快速连接及增删改查函数|-Split.h使用到的工具函数Lib重要函数实现位置|-Class.cpp类的初始化、析构等|-Func.cpp服务端直接调用函数源码|-Global.cpp操作全局变量用到的一些函数|-mysql_tools.cpp数据库函数源码|-split.cpp工具源码Log日志存储位置图74服务器目录结构③游戏导出说明客户端导出需要将所需场景全部添加进导出设置中,其次还需要在平台选项中勾选Android平台。另外为了防止导出不出错以及减少对安卓SDK的依赖,在用户设置中,需要使用内部系统构建,设置横屏,设置长时间唤醒屏幕,设置包名称,设置游戏名称。设置完成后即可导出客户端。图75客户端导出面板服务端导出需要在Linux系统的服务器上(我用的是CentOS7.364位)进入我的项目目录,然后把我需要打包的文件夹输入到命令行中,我使用的命令行指令为tar–zcvfmy_server.tar.gzappbinetcincludeliblog,得到的是my_server.tar.gz的压缩文件,我们可以使用WinSCP来把它下载到本地系统。另外我们还要导出数据库的脚本文件,我使用的是本地系统的NavicatPremium12来连接服务器上的数据库,然后就可以把数据库的结构和数据通过转储为.sql的格式来导出到本地系统了。④游戏安装说明(1)客户端代码安装流程系统要求:windows系统。直接解压到任意目录,然后使用Unity3D加载工程,用vs2017打开代码工程,untiy可在官网上下载最新版使用。想要在电脑上直接测试运行,务必运行Scenes文件夹下的scene1文件,不直接从这个入口登录,很多属性没有初始化会导致工程卡死崩溃。(2)服务端建立流程系统要求:1.linux系统的服务器2.有5.6.41版本的mysql3.支持g++及以下库gccg++mysql#include<stdlib.h>#include<stdarg.h>#include<dirent.h>#include<sstream>#include<map>#include<time.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<pthread.h>#include"mysql/mysql.h"操作:将my_server.tar.gz和boom.sql放在linux系统任意目录下注意:服务端操作时,编码为UTF-81.解压 tar-zxvfmy_server.tar.gz2.设置服务端端口和数据库账号密码 用vi编辑器打开etc/game.conf //修改端口 #definePORT9997 //修改数据库 #defineMYSQL_IP"" #defineMYSQL_ID"abc" #defineMYSQL_PASSWD"123456" #defineMYSQL_DATABASE"boom"如下:PORT=9998MYSQL_IP=MYSQL_ID=abcMYSQL_PASSWD=123456MYSQL_DATABASE=boom保存退出。(3)mysql数据库的导入请先保证你安装了mysql并能用root正常登录mysql。 数据库版本5.1.41 如果你的数据库版本不是原来版本,请自行打开boom.sql文件并逐行添加内容。 1.先用root登录 mysql-uroot-p 2.删除默认为空的用户 deletefrommysql.userwhereUser=''; flushprivileges; exit; 3.再用root登录 mysql-uroot-p 2.创建用户abc密码123456 insertintomysql.user(Host,User,Password)values("%","abc",password("123456")); 3.创建游戏数据库 createdatabaseboom; 4.将游戏数据库操作权利赋予abc grantallprivilegeson`boom`.*to'abc'@'%'identifiedby'123456'; 5.刷新 flushprivileges; 6.退出root exit; 7.导入文件(当你的版本正好是5.1.41) mysqldump-uabc-h-pboom<boom.sql 如果不是这个版本,那么请打开《mysql手动执行内容.txt》 用abc账户登录,执行useboom;后,复制粘贴其中内容到数据库中。 8.检查数据库是否导入成功 用abc登录后,useboom; showtables; 能看到新添加的几张表,而不是empty,即为成功。(4)启动服务端cdbin/ ./my_server图76服务器连接失败这种是失败。请去调整etc/game.conf的内容。(5)客户端连接用安卓手机安装apk程序或去windows中打开Unity3D工程代码调试运行输入服务器IP地址和你设定的端口,保证两边通畅,即可运行。5游戏测试我使用的游戏测试工具为VisualStudio2017和AirtestV1.2.3。VisualStudio用于手工白盒测试,直接深入代码底层,比较符合开发人员的思维习惯,适用于单元测试和集成测试。VisualStudio是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台。VisualStudio的调试方法如下:1、启动调试。可以通过VS的调试(Debug)菜单启动调试。点击调试菜单下的“启动调试”或者按F5键启动。如果你已经在代码中加入了断点,那么执行会自动开始。注:退出调试快捷键shift+F5。图77启动调试2、断点(Breakpoints)。断点用于通知调试器何时何处暂停程序的执行。通过点击左边栏或者按F9键在当前行添加断点。在加断点之前,你需要知道你的代码将会出现什么错误,在什么地方停止执行。当调试器执行到断点处时,你可以使用其他的调试工具核对代码何处出现错误。图78断点3、逐语句(StepInto)调试器执行到断点后,你可能需要逐条地执行代码。“StepInto”[F11]命令用于逐条地执行代码。这将执行当前高亮的行,然后暂停。如果在一条方法调用语句高亮时按F11,执行会停在调用语句的下一条语句上。如果当前高亮语句是方法调用,调试器会进入方法内部。图79逐语句4、跳出(StepOut)当你在一个方法内部调试时会用到它。如果你在当前方法内按Shift+F11,调试器会完成此方法的执行,之后在调用此方法的语句的下一条语句处暂停。图80跳出Airtest用于自动化黑盒测试,站在玩家的角度测试整个游戏,比较符合测试人员的思维习惯,适用于功能测试和性能测试。AirtestIDE是一个跨平台的UI自动化测试编辑器,通过自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程,另外还支持基于图像识别的Airtest框架,适用于所有Android/iOS/Windows应用,基于UI控件搜索的Poco框架,适用于Unity3D和Android/iOSApp等多种平台,能够运行在Windows上。以下为UI自动化测试的示例代码:图81自动化黑盒测试(功能测试)点击开始运行按钮后,脚本将开始执行,log窗口中将会刷新实时log,如果此时想要停止脚本的运行,只需要点击上图中间的StopScript按钮,快捷键是Shift+F5。在运行脚本后,可以立刻在log窗口中看到当前脚本执行成功还是失败,然而不能够看到更加详细直观的执行结果。在AirtestIDE中,可以点击上图中的第三个按钮ViewReport按钮,快捷键为Ctrl+L,稍等片刻后将会自动使用默认浏览器打开结果报告页面:图82测试报告图83测试报告(续)关于游戏测试的内容,宏观上可以分为:场景测试、角色动画测试、敌人动画测试、角色移动测试(碰撞体、控制器、动画结合)、敌人移动测试(碰撞体、自动寻路、动画结合)、角色攻击测试、敌人攻击测试(攻击碰撞体)、游戏性能综合测试、游戏UI布局测试、游戏UI功能测试、多平台兼容性测试等等。 关于游戏测试用到的测试用例,我以玩家与墙壁的碰撞为例进行说明。模块碰撞(玩家-墙壁)ID1标题玩家与墙壁的碰撞操作步骤玩家选择任意一面墙壁进行连续移动前置条件玩家处于游戏中预期输出/动作玩家无法穿过墙壁,碰撞效果正常实际输出/动作玩家穿过墙壁是否通过否备注该bug极有可能因为墙壁没有设置碰撞体导致对应bug编号101新建时间2020.02.02修改时间2020.04.176结论本文基于Unity3D进行了多人合作休闲类游戏的设计与实现。依据传统交互设计原则和方法,并根据游戏的目标性等原则,对游戏设计的流程脉络对交互设计流程进行全新梳理。两者相辅相成,强调设计过程中玩家核心的用户黏度,并以此构建完善的交互设计方法模型。此外论文的各种观点通过本人在实际的游戏项目对于交互设计及其相关的研发过程进行了相对应的实施验证。另外在自主研发架设游戏服务器并设计实现了游戏客户端的基础上,采用了角色控制状态机与交互取值算法、移动策略和人工智能交互等关键技术。通过“协同程序实现地图预读取”策略改良了游戏客户端运行时的效率,效能分析实验证明了该优化方法有效降低了程序时间复杂度。最后,通过开发的网络游戏系统验证了所提方法的可行性。针对行业特殊性的问题,根据论文研究方向性特征,可以根据今后的发展需求,对于相关的休闲策略类、休闲养成类等进行对应的针对性交互设计方法扩展;此外,虽然互联网的发展在不断演变中进行,但是用户为中心要素的交互原则确是在任何情况下都不会改变的,因此,后续研究将继续加强对于用户黏性的相关价值分析,并考虑融入社交平台的时效性验证的特性,对最终形成的交互设计方法模型进行不断的加强和深化。参考文献[1]休闲益智手游界面设计视觉元素研究[D].王勤勤.东华大学2017[2]基于用户黏度的社交休闲游戏交互设计方法研究[D].李熠琦.中南大学2012[3]基于IOCP的多人在线休闲游戏服务器的设计与实现[D].段念.电子科技大学2010[4]免费休闲网络游戏企业营销战略研究[D].池勇.上海交通大学2007[5]休闲类网络游戏客户生命周期不同阶段忠诚影响因素实证研究[D].刘斌.浙江大学2007[6]基于Unity3D的多人在线网络游戏设计与开发[J].吴晶晶,戴智超.计算机系统应用.2017(10)[7]互动媒介论——电子游戏多重互动与叙事模式[D].关萍萍.浙江大学2010[8]计算机图形学基础教程.孔令德.北京:清华大学出版社,2008:26-35[9]基于地形的三维场景绘制方法[J].陈健松,徐从富,潘云鹤.计算机工程与应用,2006,(08):31-33[10]基于Unity3D的三维地形建模[J].张敏.湖南工业职业技术学院学报.2014(06)[11]DynamicSchedulingofTerrainBasedonUnity[C].FangTian;LihongLou.Proceedingsof2018InternationalConferenceonNetwork,Communication,ComputerEngineering(NCCE2018)2018-05-26[12]UnderstandingrepeatplayingbehaviorincasualgamesusingaBayesiandataaugmentationapproach[J].SamK.Hui.QuantitativeMarketingandEconomics.2017-03-15[13]CasualGamesandCasualLearningAboutHumanBiologicalSystems[J].C.AaronPrice;;KatherineGean;;ClaireG.Christensen.JournalofScienceEducationandTechnology.2016-02-15[14]Aknowledge-basedapproachtomultiplayergamesinpeer-to-peernetworks[J].MichaelS.Gibson;;WambertoW.Vasconcelos.KnowledgeandInformationSystems.2019-09-02[15]Forensicinvestigationofcrossplatformmassivelymultiplayeronlinegames:MinecraftasacasestudyTaylorDCPaulJ;;MwikiHenry;;DehghantanhaAli.Science&justice:journaloftheForensicScienceSociety.2019-05-04致谢本论文的撰写工作是在指导老师徐积文的悉心指导下完成的,同时也不得不感谢我的友人李奕威在论文撰写过程中的督促,帮助与指点。本科生就学期间,友人李奕威、蒋皓洋、陈志深、吴陈华在学习、生活、就业等方面提供了诸多帮助,使本人快速成长,在此向他们致以最真诚的感谢。论文撰写期间,徐积文老师给予了众多宝贵的指导建议,帮助本人顺利完成开题、初稿撰写、终稿修改等工作。徐积文老师严谨的治学态度、丰富的专业知识、高尚的师德让本人在诸多方面受益匪浅。值此之际,向指导老师徐积文致以最诚挚的感谢。最后也感谢家人对本人攻读本科生的理解、支持和鼓励,是他们的无私付出令本人能够专注于学业,顺利完成四年的本科生学习。

电脑无法识别U盘该怎么办HYPERLINK电脑无法识别U盘怎么办?打开我的电脑上单击右键,在快捷菜单里,选择“管理”,打开“计算机管理”窗口。在计算机管理窗口里,选择“存储”下面的“磁盘管理”,如果看得到没有盘符的U盘,那么在这个U盘上按鼠标右键,选择“更改驱动器名称和路径”选项,就打开了“更改……的驱动器号和路径”对话框。再点击“更改”按钮,打开“更改驱动器号和路径”的对话框,在“指定以下驱动器号”的右边下拉列表里,选择你希望分配给U盘的驱动器号,尽可能靠后选择,比如X、Y、Z,选择好后,单击确定按钮,回到上一次“更改……的驱动器号和路径”对话框窗口,再一次单击确定,就回到“计算机管理”窗口。至此,如果一切正常,就给U盘单独设置了一个长久使用的驱动器号,并却,不受虚拟驱动器的影响了。建议将U盘插到电脑上,看任务栏中是否显示图标,如果显示,在我的电脑点右键查看属性——高级——硬件——设备管理器——查看里面是否有问号的设备,在问号设备上点右键——更新驱动程序然后下一步——否暂时不连接到网络——下一步自动安装软件(推荐)就可以了另外:系统不认U盘的几种处理方法1.禁用主板usb设备。管理员在CMOS设置里将USB设备禁用,并且设置BIOS密码,这样U盘插到电脑上以后,电脑也不会识别。这种方法有它的局限性,就是不仅禁用了U盘,同时也禁用了其他的usb设备,比如usb鼠标,usb光驱等。所以这种方法管理员一般不会用,除非这台电脑非常重要,值得他舍弃掉整个usb总线的功能。但是这种屏蔽也可以破解,即便设置了密码。整个BIOS设置都存放在CMOS芯片里,而COMS的记忆作用是靠主板上的一个电容供电的。电容的电来源于主板电池,所以,只要把主板电池卸下来,用一根导线将原来装电池的地方正负极短接,瞬间就能清空整个CMOS设置,包括BIOS的密码。随后只需安回电池,自己重新设置一下CMOS,就可以使用usb设备了。(当然,这需要打开机箱,一般众目睽睽之下不大适用~~)2.修改注册表项,禁用usb移动存储设备。打开注册表文件,依次展开"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbehci”双击右面的“Start”键,把编辑窗口中的“数值数据”改为“4”,把基数选择为“十六进制”就可以了。改好后注销一下就可以看见效果了。为了防止别人用相同的方法来破解,我们可以删除或者改名注册表编辑器程序。提示:“Start”这个键是USB设备的工作开关,默认设置为“3”表示手动,“2”是表示自动,“4”是表示停用。3.在computermanagement里将removablestorage的使用权限禁止。computermanagement是一个windows管理组件,可以在控制面板——管理工具——计算机管理打开。在该工具窗口中storage——removablestorage——property中,general项,可以控制系统托盘是否显示security则可以管理移动存储设备的使用权限。在security中将普通用户的使用权限降低,就可以达到禁用u盘的目的。破解的方法也很简单,管理员降低普通用户移动存储设备的使用权限,但未必禁用computermanagement的使用权限。普通用户可以通过这个工具解除usb移动存储设备的使用权限限制。另外,值得一提的是,如果u盘插到电脑上后可以驱动,但是我的电脑里却没有盘符,很有可能是管理员改动了u盘的默认盘符,使得我的电脑不能识别。这种情况,可以在movablestorage中看到u盘驱动器。可以在u盘驱动器属性设置里为u盘重新分配一个盘符,再重新插拔一次u盘,就可以在我的电脑里看到u盘的盘符了。一、首先可以将该U盘换到别的机器上,看使用是否正常。如果排除了硬件损坏的可能,一般就是软件方面有问题。在WindowsXP+SP1操作系统下,有些USB2.0设备的确常常出现工作不稳定的问题,可以试试安装设备自带的USB2.0驱动程序。另外最好不要使用USB延长线,防止因为供电不足而造成不稳定现象。如果仍无效,可以在主板BIOS设定中,将USB接口强行设置为USB1.1传输速率。二、(适用于WIN98)启动计算机,进入主板BIOS设置,检查BIOS中USB的相关选项是否已经打开:OnChipUSB设定为Enabled;USBController设定为Enabled;PNPOSInstalled设定为Yes;AssignIRQForUSB设成Enabled。要正常使用USB设备首先要开启USB接口,在主板BIOS里可以进行此项工作,一般来说只需在BIOS中进入ChipsetFeatures设置,并将USBKeyborad/MouseLegacy选项设定为Enable,就能够保证在操作系统下使用USB键盘了。这些选项的作用是打开主板芯片组对USB设备的完全支持,为系统识别USB设备做准备工作。三、USB口接触不好处理办法:拔下,等十秒钟再插上USB口,使接触完好;五、闪存盘驱动程序没有安装完成(WIN98系统下)处理办法:鼠标点“我的电脑”,选择属性找到“通用串行总线”,删除其中的USBMASSSTORAGE项,再点击“刷新”,然后按照提示重新安装一次驱动程序。六、接其它USB设备(如扫描仪、打印机、数码相机)时可以正常使用,接优盘时闪指示灯不亮,不能够使用。1、检查优盘与电脑的联接是否正常,并换用其它USB接口测试。2、检查设备管理器,看是否出现”通用总线设备控制器”条目,如果没有,请将电脑主板BIOS中USB接口条目*激活(ENABLE)。3、如果电脑安装过其它类型USB设备,卸载该设备驱动程序,并首先安装优盘驱动程序。4、到其它电脑试用此优盘,确认是否优盘不良。七、启动型优盘在的电脑上无法实现启动,可能是主板型号不支持。如何判断一块主板是否支持闪存盘启动系统启动型优盘是采用模拟USB软驱和USB硬盘的方式启动电脑的。只要电脑主板支持USB设备启动,即BIOS的启动选项中有USB-FDD、USB-HDD或是其它类似的选项,就可以使用启动型优盘启动电脑。八、第一次在电脑上使用优盘,未出现提示发现新硬件的窗口,驱动程序无法安装的原因可能是:1、主板usbcontroller未启用解决办法:在电脑主板BIOS中启用此功能。2、usbcontroller已经启用但运行不正常解决办法:在设备管理器中删除”通用串行控制器”下的相关设备并刷新。3、优盘被电脑识别异常,在设备管理器中表现为带有黄色?或!的”其它设备”或“未知设备”。解决办法:删除此设备并刷新。九、大容量的U盘(例如兼具MP3播放器或录音功能的U盘)或移动硬盘在电脑上无法正常使用,虽然系统提示找到了未知的USB设备,但无法正确识别U盘或移动硬盘。原因可能是:1.USB接口供电不足:系统为每个USB接口分配了500mA的最大输出电流,一般的U盘只需要100mA的工作电流,因此在使用过程中不会出现什么问题。大多数移动硬盘所使用的是普通的2.5英寸硬盘,其工作电流介于500mA~1000mA之间,此时假如仅仅通过USB接口供电,当系统中并无其他USB设备时,那么还是可以勉强使用的,但如果电压不稳的话,就随时可能出现供电不足的问题。特别是使用支持USB2.0的移动硬盘时,情况最为严重。另外,如果你的笔记本电脑使用电池供电,那么USB接口所分配的电量就更小了。2.使用了外接的USB扩展卡:在笔记本电脑中使用USB2.0的U盘或移动硬盘时,如果笔记本电脑不支持USB2.0技术,一般必须通过PCMCIA卡转USB2.0的扩展卡来间接实现支持,这些扩展卡基本上都采用NEC公司的D720100AGMUSB控制芯片,少则提供两个USB2.0接口,多则提供五个USB2.0接口,对一般用户而言足够使用了。由于PCMICA接口提供的电源功率比板载USB接口要小,这样就会由于供电不足而导致移动硬盘工作的出现问题。解决方案:1.它从USB连接线上接移动硬盘的一端引出一根转接线,可以插入电脑背后的PS/2接口取电,这里可以比USB接口提供更大的电流输出。2.利用电源补偿线(也称“键盘取电线”),如果U盘或移动硬盘的包装盒中提供了选配的电源适配器,你就可以直接使用外接电源,这样就可以从根本上避免供电不足的情况发生了前置USB线接错。当主板上的USB线和机箱上的前置USB接口对应相接时把正负接反就会发生这类故障,这也是相当危险的,因为正负接反很可能会使得USB设备烧毁。所以尽量采用机箱后置的USB接口,也少用延长线.也可能是断口有问题,换个USB端口看下.USB接口电压不足。当把<ahref="mobileharddisk">移动硬盘</a>接在前置USB口上时就有可能发生系统无法识别出设备的故障。原因是<ahref="">移动硬盘</a>功率比较大要求电压相对比较严格,前置接口可能无法提供足够的电压,当然劣质的电源也可能会造成这个问题。解决方法是<ahref="">移动硬盘</a>不要接在前置USB接口上,更换劣质低功率的电源或尽量使用外接电源的硬盘盒,假如有条件的话。主板和系统的兼容性问题。呵呵这类故障中最著名的就是NF2主板与USB的兼容性问题。假如你是在NF2的主板上碰到这个问题的话,则可以先安装最新的nForce2专用USB2.0驱动和补丁、最新的主板补丁和操作系统补丁,还是不行的话尝试着刷新一下主板的BIOS一般都能解决。系统或BIOS问题。当你在BIOS或操作系统中禁用了USB时就会发生USB设备无法在系统中识别。解决方法是开启与USB设备相关的选项。就是开机按F2或DEL键,进入BIOS,把enableusbdevice选择enable。拔插要小心,读写时千万不可拔出,不然有可能烧毁芯片。XP中任务栏中多出USB设备的图标,打开该图标就会在列表中显示U盘设备,选择将该设备停用,然后你再拔出设备,这样会比较安全。

其实判断软件硬件问题很简单,在别的机器或换个系统试试就可以了.有些小的问题不妨先用专门软件格式化下.还有提醒大家WINDOWS下格式化时要选择FAT,不要选FAT32。

提示无法识别的USB设备维修

故障提示如图:

无法识别的USB设备:UnknownUSBDevice.很多人都遇

温馨提示

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

评论

0/150

提交评论