Unity3d GUI 简单用户图形界面设计

合集下载

unity3D之UI的设计

unity3D之UI的设计

unity3D之UI的设计大家还记得我们的预设 windows 吗?先把他拉出老,放到UI Root(XD)下,然后我们重温一下他的树状结构:然后,重命名为 UI Description windows,同时,选中Panel,并复制出4份,然后将他们重命名为,如下图:很好,麻烦的事情开始了,选中第一层,即Ui description windows,然后将它重新配置成如下图:Tween Position, (窗口移动后用于回复的动画)UI_Description_Manager, 茶水编写的管理文件,用于管理和调用各种的描述面板。

UIPanel,略。

Rigidbody,无解。

然后我们今天首先设计最简单的 UI Description Weapon, 首先看全身照:然后选中 Lable, 修改他的text,娶个好名字,例如 Item Description 之类的。

好了,然后选中Descrtion Slot, 看看他是个什么东东,最好是一个边框是白色然后中间透明的图片,用于自动匹配道具等级颜色用的。

然后在看看其他的东西,Icon, 就一个纹理而已,用于显示道具的图标而已无压力。

Name,一个label和一个属性绑定的组件,用于显示道具名字和匹配道具的等级颜色,请小心如图配置好各项。

Text Area - Status,又一个label,用于显示道具属性。

Text Area - Description,又一个label,用于显示道具的描述。

OK,附上效果图:好了,基本的设计就是这样了,然后现在来看看 UI_Descrition_Weapon 的配置:呃,好了,武器的描述面板基本就这样完成了,然后告诉你们一个好消息,UI Description Armor 和 UI Description Shield 的设计是一样的,只需要替换响应的脚本 UI_Description_Armor 和 UI_Description_Shield 就可以了,是不是很兴奋呢,然后,还记得之前设计的背包吗?呃,貌似必须要记得,好了,现在选中玩家背包 UI Player Inventory windows, 并如下设置:同样,配置好 UI Store Inventory windows 和 UI Shop Inventory windows,好了,点击运行吧,看看今天努力的成果吧本系列很快就要结束了,会后还有两个UI而已,一个是Part 一个是Recipe.Part是一个很简单很简单的UI,相信此时大家可以轻松的自行设计出这个UI了,放出配置图如下:这个就当时留下的课后作业了,最后一章将会是Recipe了。

Unity3D UI和ScrollView

Unity3D UI和ScrollView

今天我们通过一个综合的例子来讲解NGUI的3dUI和ScrollView。

本例结合是了NGUI官方自带例子中的Example 6 - Draggable Window和Example 7 - Scroll View (Panel)两个场景的内容来讲的,帮助大家更好的理解这两个场景的内容。

如果大家对这两个场景都很精通的话,可以忽略此教程。

最终实现结果如下图:1.首先新建一个场景,通过菜单NGUI-->OpentheUIWizard打开UITool窗口,这次我们新建UI的时候更改UI的camera选项,设置为Advanced3D.如图2.在Panel节点下新建三个Panel,分别命名为LagPos,AutoYaw,DragTilt,设置它们的层级关系为并且设置AutoYaw为LagPos的子物体,设置DragTilt为AutoYaw的子物体。

这里我们只是需要它们的Transform节点属性。

可以把它们的UIPanel代码删除掉。

建立好之后,它们的层级关系如图:3. 在DragTilt节点下新建一个Panel,作为我们所有UI元素的根节点命名为Panel_Root,然后再在它的节点下新建两个Panel。

分别命名为Panel_Controls,Panel_List。

这里提醒大家,在做3D UI 的时候,一定要多用Panel,可以把同一组的UI元素放到一个Panel里。

这样在控制的时候就会很方便,我们只要指定显示或者隐藏它们所在的Panel就可以动态切换界面。

还有一个要注意的就是在3D UI中,UI元素的Z轴位置属性是有用的。

它们都是真实的3D物体。

这意味着我们可以控制它们的Z轴位置和Z轴旋转。

界面效果如图。

4. 下面我们开始为各个UI元素赋予属于它们的代码。

首先为LagPos添加脚本LagPosition。

该脚本的作用在于我们移动panel的时候,它可以模拟一个缓冲的移动效果。

然后是AutoYaw,为它添加脚本WindowAutoYaw,该脚本的作用在于使物体在左右移动的时候自动旋转一定角度,实现透视效果。

Unity3d界面设计教程

Unity3d界面设计教程
• 我有很多的魔法
– 删除 – 组织 – 隐藏 – 转移
• 我的灵魂能力
– 思考
Thank you
by:邪让多杰
准备
• 总体结构
– NGUI 统一的层管理,我们约定。基础背景0~1层。一级面板在2层。面板元素3~6层 二级 面板7~10层 。不能超过3级面板。 所有的界面做成在一次。统一调度。 好处:快速响应,结构清晰 坏处:内存消耗,开发麻烦
– Daikon-GUI 只用保持好面板层次关系就好。同样不能超过3级面板。 同一Panel下,一个层只能有一个控件

4
精选2021版课件
Atlas 与 Font
• Atlas ---- 图集
将多张零散的图片融合成为一张图,低碳环保。
• Font ---- 字体
– 动态字体
• DF-GUI公开版本并没有动态字体,可以和作者要。
使用标准的字体文件(.TTF),能屈能伸份量大。
– 图集字体 将字体弄到图片里,根据坐标静态调用。好处可以使用各种效果,以及聊天表情。
如果活在世上不做有意义的事情, 那么不如死了!
-----《多杰语录》
- 这是一个免费教程,谨防受骗上当。 - 教程中所含插件,软件,都是和我的朋友借的,如有版权问题,
请联系朋友,与作者无关。 - 限于作者水平,教程中错误以及遗漏之处,有本事你来打我啊!

19
精选2021版课件
1. You and me
道理谁都懂,凡夫谈资,学者运用。 -----《多杰语录》
- 这是一个免费教程,谨防受骗上当。 - 教程中所含插件,软件,都是和我的朋友借的,如有版权问题,
请联系朋友,与作者无关。 - 限于作者水平,教程中错误以及遗漏之处,有本事你来打我啊!

Unity界面操作手册

Unity界面操作手册

Unity界面入门教程1.教程目的如果你刚刚接触Unity,这个将是你阅读的第一个教程.这将讲解Unity的界面和如何在三维空间中创建基本的游戏对象.为了说明Unity界面的要素,我们将创建一个角色在地面上走动的简单的场景.注: 如果需要实际操作的文字,会被加”-”前缀.2. 屏幕布局在开始之前,让我们确定屏幕布局在2 Split模式.- 想这样,选择Window->Layouts->2 Split.你的视图现在分成5个主要区域:1. 场景视图(Scene View) –用于摆放游戏对象2. 游戏视图(Game View) –将显示游戏运行后的样子.3. 层次视图(Hierarchy View) –这将列出所有在目前场景视图中用到的游戏对象.4. 项目视图(Project View) –这个视图将显示资源目录下所有可用的资源列表(像调色板).5. 检视视图(Inspector View) –显示所选中游戏对象的属性信息.3. 在3D空间查找游戏对象- 启动Unity,我们将开始建立一个新的项目.- 从主菜单选择File->New Project,设定名字为” GUITu torial”并点击Create Project按钮.Unity将导入资源(assets)(例如声音,纹理,模型)因此他们是可用的.一旦导入完成你就会看到你的游戏场景.目前,场景中仅包含一个主相机(这是默认的),你能从层次视图看到这个唯一的项.- 如果在场景视图中看不到相机,在层次视图中点击主相机(Main Camera),然后移动光标到场景视图内,按F(frame select)键,主相机将显示在场景视图的中心.这个技巧能用来查找任何游戏对象. - 可以从场景视图或者在层次视图中选择任何游戏对象.如果你在场景视图单击一个对象,你可以从层次视图中高亮显示的项来确定你的选择.4. 创建游戏对象让我们加入一些游戏对象到我们的场景.- 选择Game Object->Create Other->Plane, 这将创建一个平面(一个2D面片)供角色行走.- 添加一个立方体到游戏世界,选择Game Object->Create Other->Cube.- 添加一个点光源,选择Game Object->Create Other->Point Light.5. 场景视图导航你可以用下列方法从任何角度查看3D模型:1. 旋转(Option+鼠标左键)2. 平移(Option+鼠标中键)3. 缩放(Option+鼠标右键)注: 在Mac键盘上Command键的旁边是Option键旁边.如果你是单键鼠标,或者使用笔记本电脑,你仍然可以轻松浏览,首先按一下左上角的手型工具,然后用:1. 旋转(Option+鼠标左键)2. 平移(鼠标左键)3. 缩放(Command+鼠标左键)- 现在试试它.6. 移动游戏对象你可以用下面的方法移动三维空间中任何游戏对象:1. 移动工具(快捷键W). 选中任何游戏对象,然后按W键,将显示三个箭头,红色是X轴,绿的是Y轴,蓝色是Z轴,即红绿蓝对应x,y,z.要移动一个对象,左键点击一个箭头并做适当的移动.你移动的同时在监视面板中也佟刚的改变.你可以同样键入数值在三个文本框.你能同样重定位游戏对象,首先点击它,然后把相机指向你所希望移动到的大概方向,然后选择Game Object-> Align with View.所选择的游戏对象将移动到相机所指向的那里.2. 旋转工具(快捷键E). 选中任何游戏对象然后按E键,将显示选择工具.单击左侧的旋转轴后并移动鼠标来旋转游戏对象.当你旋转对象的同时在检视面板中也同样的会看到旋转值改变.你也可以在文本框里直接输入数值.-让我们做个小联系.移动Cube(移动工具)使其不在场景视图中.用Frame Select(在层次视图中选中Cube并按下F键)来找到这个对象.最后移动Cube到平面上.- 移动点光源到Cube和平面附近.7. 游戏视图游戏视图将显示游戏运行的样子(完整的纹理,照明等).如果你无法在游戏视图中看到你游戏场景,那是因为你的相机没有找到正确的朝向.- 单机主相机(Main Camera),你会发现出现一个倒金字塔线框.这就是相机的视角(它的视野).如果视野方向没有指向你的游戏对象,在场景视图里导航找到你的游戏对象,选择主相机并选择GameObject->Align With View .你的游戏视图现在会匹配你的场景视图.你同样可以通过移动和选择工具来调整设置相机,或者在检视视图改变transform值.你可以同样移动灯光到最美的位置.8. 缩放游戏对象要缩放一个对象首先要选择它并按下R键(缩放工具).你将看到缩放手柄,拖拽每个轴上的末端方块来缩放对象.或者检视视图键入精确的数值.我们现在缩放游戏场景中的一些对象.- 选择plane并在检视视图中设置它的x和z的缩放值到10(在第一个和第三个文本框里,第二个为y值).- 选择cube,在视图上沿着y轴缩放它(按下R键并拖拽绿色小方块).cube现在看起来会像柱子.- 重命名cube为” Pillar”.在层次视图中选择它并按下回车键输入新的名称.记住,游戏对象的名称的首写最好是大写字母.9. 资源使用电脑游戏是由三维模型,纹理,声音文件,游戏代码等构成,这些被称作为游戏的资源(assets).Unity已包含有标准资源包(甚至是专业版资源包).我们将从内置的资源中添加一个角色到我们的游戏场景.在项目视图中展开标准资源(StandardAssets)文件夹,预设(prefab)是将游戏对象预组装到一个逻辑分组里.你应该在预设文件夹内看到第一人称控制器(FPS Controller).- 拖拽第一人称控制器到场景视图.注意看游戏视图的变化,这是因为第一人称控制器预设里包含自己的相机,将替换主相机的视野.确保第一人称控制器没有陷入plane对象之下,移动它到plane上.- 删除主相机(Main Camera),因为现在我们不需要它了(Command+delete).游戏视图中现在显示的将是Player在游戏里所看的视角. - 点击播放按钮启动游戏.注意保持软件界面布局,这样你就可以在场景视图和游戏视图观察游戏.使用光标键(或W,S,A,D)在场景中行走,用鼠标环顾四周和按下空格是跳跃.- 任何时候可以再次点击播放按钮停止游戏运行.注: 在当光标处于任何视图(游戏视图,场景视图等)内的时候按下空格键,这将是该视图最大化.有助于更好的在场景视图中做调整或在游戏视图中玩游戏.在最大化的视图中再次按下空格键返回以前的布局模式.注意这个功能在游戏正在运行时候不能正常工作,必须先停止或暂停游戏.10. 添加组件游戏对象能有若干个组件(或行为)组合而成.点击任何游戏对象,你能在检视视图看到它所附件的组件.如Transform,Box Collider等等.- 点击Pillar,在检视视图中查看它的组件.让我们再添加另一个cube和加一个额外的组件.- 添加一个cube到场景中(GameObject->Create Other->Cube). 在层次视图重命名为”PhysicsCube”.现在我们要添加一个刚体(Rigidbody)组件到这个cube.刚体(RigidBody)组件允许游戏对象拥有一个重力,即对象将会向下下降,知道碰到含有碰撞(collider)组件的物体为止.- 确保选中PhysicsCube,选择Component->Physics->Rigidbody.这将添加刚体组件到当前所选择的游戏对象.注意在检视面板中也会看到刚体组件被添加.- 移动PhysicsCube到Pillar旁边,不要距离太远(如图).我们将实现按下播放键的时候PhysicsCube将碰撞Pillar并落在地上.- 按播放键, PhysicsCube应该与Pillar相撞并落在plane上.11. 复制复制游戏对象是一个强大的功能.当复制一个对象,它所有的功能和行为也会被复制.这是在场景中创建多个相同对象的非常快捷的方法.我们现在添加更多的PhysicsCubes到我们的场景中. - 单击PhysicsCube和按下Command+D(或者从Edit菜单做这个). 注意在层次视图中将多出一个PhysicsCube项,但是你不能在场景视图中发现它,因为它和场景中原有的PhysicsCube是重叠在一起的.- 使用移动工具(W)向上(y轴)移动新的PhysicsCube.- 重复该过程,复制出3个PhysicsCube(如图).- 运行游戏,三个PhysicsCube对象能相互碰撞动作.此教程介绍了Unity的基本界面知识.你现在应该去看看脚本教程.Unity界面入门(1)2010-07-06 10:41严格地说,既然是界面入门,一定是少不了图片的.但是无奈cartoonboy是在记事本上完成的,就请多多见谅了.Unity界面入门1.目标如果我们刚刚接触Unity,或许我们应该把这个视为第一个教程.这里我们将讲解Unity的界面和如何在三维空间中创建基本的游戏对象.为了更形象的说明,我们将创建一个简单的场景并且让一个角色在地面上行走.2.界面布局在开始之前,我们先设定界面布局为2Split模式.-选择菜单栏Window->Layouts->2 by 3.这时我们的界面分成了5个主要区域:1.Scene场景,用于摆放游戏对象2.Game游戏,用于显示游戏运行后的样子.3.Hierarchy层次,用于列出所有在目前场景中用到的对象.4.Project项目,用于显示资源目录下所有可用的资源列表.5.Inspector检视,用于显示所选中游戏对象的属性信息.3.在3D空间查找游戏对象-启动Unity,我们来新建一个项目.选择菜单栏File->New Project,指定路径并起名.如:GUITutorial.点击Create Project按钮.Unity将导入资源(assets),诸如:声音,图片,模型之类的文件.一旦导入完成我们就会看到游戏场景.目前,这里只有一个主相机(默认),我们能从Hierarchy 中看到它.这里有个非常非常有用的技巧可以查找任何对象:如果我们看不到某个对象,然而我们确实创建了它,就可以在Hierarchy选中对象并把鼠标移至(可不是拖拽!)场景内,按F键,这个对象就会显示在场景的中心.当我们在场景Scene中单击一个对象,Unity将从Hierarchy中高亮显示.4.创建游戏对象让我们加入些游戏对象到场景.-菜单栏Game Object->Create Other->Plane,这将创建一个平面.-菜单栏Game Object->Create Other->Cube,创建一个立方体.-菜单栏Game Object->Create Other->Point Light,创建一个点光源.5.场景面板导航(这种说法总觉得别扭)我们可以用以下方法从任何角度查看3D模型:1.旋转(Alt+左键)2.平移(Alt+中键)3.缩放(Alt+右键)注意:这里说的是Windows系统,不是美丽的,优雅的,高贵的Mac系统.6.移动游戏对象我们可以用下面的方法移动三维空间中的任何对象:1.移动工具(快捷键W).选中物体,按W键,将显示3个箭头,红色X轴,绿色Y轴,蓝色Z轴.鼠标点击可移动.在GameObject中有一个Align with view,经过多次试验,验证出它的作用是将被选物体,以Scene窗口为参照,重置其位置.准确的说,这个位置就是能映像为当前Scene窗口画面的摄像机的位置.而Move with view则是将物体重置到Scene的正中.(多次实践会有深刻理解)2.旋转工具(快捷键E).选中物体后按E键.物体会被3色的线包围.我们可以通过鼠标旋转物体,也可以通过在Inspector检视面板中输入数值来旋转物体.7.游戏面板游戏面板将显示游戏运行的样子(完整的纹理,照明等).如果我们无法在游戏面板中看到我们的游戏,那是因为相机没有找到正确的朝向.-单击相机,你会发现它的视角.如果视野方向没有指向你的物体对象,那么你可以点击物体后,选择GameObject->Align With View.(快捷键Ctrl+shift+F).同样你也可以通过其他手动方法进行调整.8.缩放游戏对象缩放一个物体首先要点选它并按下缩放键(快捷键R).我们可以用鼠标来拖拽3色手柄或在Inspector面板中输入数值来缩放物体对象.9.资源使用我们的游戏一般由模型,纹理,声音,脚本等等构成,这些被称为资源(assets).Unity已包含有标准资源包(专业版另有专业包).我们将从内置的资源中添加一个对象到游戏场景.在Project面板中展开Standard Assets文件夹,展开预设(Prefabs),我们会看到第一人称控制器First Person Controller.-拖拽这个控制器到Scene中.注意看Game面板的变化,这是由于第一人称控制器(以下简称FPC)包含自己的相机,会替换主相机的视野.移动FPC到Plane之上.-删除主相机(Main Camera),因为它已没有任何作用.-运行.你可以使用方向键或w,s,a,d在场景中行走,或用鼠标环顾四周或按空格键跳跃.注意:在游戏停止状态,空格键可以最大化鼠标点击过的面板.10.添加组件游戏对象有若干组件(或行为)组成.单击任何对象,你将在检视面板中看到它的组件.如Transform,BoxCollider等等.-创建一个Cube到场景,怎么做的?GameObject->CreateOther->Cube.重命名为PhysicsCube. -添加Rigidbody(刚体)组件到PhysicsCube.使PhysicsCube有一个重力,直到碰到含有碰撞器(collider)组件的物体为止.选中PhysicsCube,选择菜单栏Component->Physics->Rigidbody.-运行.一个箱子落了下.11.复制复制一个对象,它所有的功能和行为都会被复制.这是快捷创建多个相同对象的方法.我们现在添加更多的PhysicsCube到场景中.-单击PhysicsCube.按Ctrl+D.-新复制的对象会与被复制对象重叠.所以我们需要移动它才能看到.-多复制几个.-运行.这里我们对Unity界面有了基本认识,或许可以考虑进一步的学习了.。

Unity3d——UI框架的设计(转)

Unity3d——UI框架的设计(转)

Unity3d——UI框架的设计(转)转⾃:简易UI框架1.UI框架核⼼⽅法BaseUI会记录UI的名字(枚举)和Controller⽤来将UI与具体操作⽅法解耦UIManger利⽤字典记录所有的UI组件,然后提供⼀些打开关闭UI的⽅法EventManager(事件系统)来实现模块与模块之间的交互,事件系统也分很多种实现⽅式,都是观察者设计模型的典型应⽤,利⽤⼀个关键字注册多个⽅法,然后在利⽤这个关键字激活调⽤已经住的⽅法。

也是C#中委托的⼀种典型⽤法。

⼴播形式、通知形式等。

2.UI框架拓展⽅法ResourcesManager(资源管理器),封装⼀些加载Resources资源的⽅法,同步加载,异步加载,加载并实例化等⽅式的⽅法。

DataHelper(数据解析器),对Xml、Json(LitJson、JsonFX)、Protobuf等数据格式序列化与反序列化插件的进⼀步封装,⽅便调⽤。

Common Extension(公共拓展组件)利⽤泛型和拓展⽅法对Unity中的⽅法进⾏进⼀步的封装,加快开发速度。

Singleton(单例)NetworkManager,负责与后台数据的下载、上传。

3.简易UI框架的优缺点容易上⼿使⽤针对C#新⼿相对容易理解只适合很⼩的项⽬拓展性很差逻辑会堆在MonoBehaviour的脚本下,效率降低躺过上⾯这种简易UI框架的坑之后,才会意识到⼀个⼤⼀点的项⽬,或者是多⼈合作开发的项⽬,⼀定要有⼀个较为牢靠的框架做为基础,在Unity中有⼏种常见的框架,也是从传统的经典矿建拓展过来的。

PureMVC(MVC框架),StrangeIOC(MVCS框架),uFrame(MVVM框架)。

为了对⽐这三种常⽤框架的易上⼿程度和开发速度、理解难度,我将⽤同⼀个案例,⽤三种框架都编写⼀次,实实在在的对⽐⼀下框架的区别之处,得出最终的结果。

PureMVC框架:PureMVC优缺点:- 1.利⽤中介者,代理者,命令实现解耦,使得Model、View、Controller之间耦合性降低,提升了部分代码的重⽤- 2.View界⾯可以实现重⽤- 3.Model数据可以实现重⽤- 3.代码冗余量⼤,对于简单的功能都得创建View、Mediator、Command、Facade,Proxy,Model脚本- 4.操作过程⽐较繁琐的流程,Mediator中的代码会显得流程较为复杂难懂,除⾮你很熟悉PureMVC执⾏原理PureMVC特点:- 1.通知的传递都要经过装箱和拆箱的操作- 2.命令/通知是以观察者模式实现,命令/通知在观察者中利⽤反射获取⽅法并执⾏- 3.没有Service(可按照MVC的构造,⾃⾏添加与⽹络通讯的这个模块)- 4.数据通过通知传递,SendNotification只有⼀个object类型参数,会感觉数据传输受限,可以将数据组合成⼀个类型/结构传递,或者是为Notification再拓展⼀个参数。

Unity3D游戏开发菜鸟快速上手指南

Unity3D游戏开发菜鸟快速上手指南

大家对Unity3D游戏引擎应该并不陌生,因为Unity3D在轻量级游戏开发和跨平台上面有他独特的优势,所以在当前可谓是炙手可热。

17xuee游戏学院简单介绍了Unity3D的一些基础。

并且有部分内容根据天天飞车项目经验做了简单分析。

适合没有接触过Unity3D和手游开发,并想了解其大概的同学。

1Unity3D简介1.1编辑器简介编辑器整体视图如图1.1所示。

里面包括了Unity常用的编辑窗口:图1.1 Unity编辑器界面Project视图、Hierarchy视图、Scene视图、Game视图、Inspector视图、Console视图、Profiler视图。

1.1.1Project视图Project视图可以理解为工程目录,里面罗列了工程里面的所有资源文件。

常见的资源包括:脚本、预设(Prefab)、模型、贴图、动画、Shader等。

用户可以通过右上角的搜索框,搜索工程内的文件。

1.1.2Hierarchy视图Hierarchy视图显示了当前游戏场景中,所有的游戏对象。

游戏对象是通过树形结构排布,展开后可以看到每个子节点对象。

常用的游戏对象包括:摄像机、场景物件、玩家、光源等。

1.1.3Game视图Game视图是游戏视角,即游戏最终展示给玩家的内容。

游戏视角包括两部分:1、场景中当前摄像机照射的场景;2、游戏UI界面。

1.1.4Scene视图Scene视图有点像3DMax的编辑环境,在这里可以看到当前场景中的所有游戏对象。

双击Hierarchy中的游戏对象,可以在Scene中定位到对应的物件。

在游戏运行期间,暂停游戏。

开发人员可以在Scene中找到对应的游戏对象,查看当前帧的世界场景,方便查找BUG。

1.1.5Inspector视图Inspector视图是游戏对象的属性面板。

选择一个物件后,可以在Inspector面板中查看或编辑游戏对象的属性。

游戏运行期间,修改游戏对象属性,可以马上作用到游戏对象。

Unity3d ngui基础教程

Unity3d ngui基础教程

NGUI教程:步骤1-Scene更多精彩请关注【狗刨学习网】1.创建一个新的场景(New Scene)。

2.选择并删除场景里的MainCamera。

3.在NGUI菜单下选择Create a New UI,会打开UI创建向导。

4.在创建向导中你能更改UI的基本参数。

现在我们选Default layer,点击Create Your UI 按钮。

5.就这样,你的UI便创建好了。

注意:如果在一个已存在NGUI的项目中你要跳过第二步,并且你要选择一个不同的UI 层,你还要确保非GUI相机不渲染UI层。

在做具体UI控件之前,我们看看UI向导为我们做了什么。

1.在UI Root (2D)对象上有个UIRoot脚本。

这个脚本会重新调整游戏对象符合你的屏幕高度,有自动和手动选择高度。

让你制定小部件在像素中的坐标,并且和游戏世界中的剩余对象相比依旧相对来说较小。

2.Camera对象包含Camera和UICamera脚本。

UICamera脚本包含NGUI的事件系统(event system)。

3.Anchor包含UIAnchor脚本。

虽然这个脚本可以附加给控件,但在这里可以避免Windows 机器上半个像素偏移的问题。

4.Panel对象有UIPanel脚本,UIPanel是一个容器,它将包含所有UI小部件,并负责将所包含的部件组合优化,以减少绘制命令的调用。

同时,你可能还注意Panel(仪表板)GameObject现在已经被选中了。

也就是说下面添加的所有部件都将在作为它的子对象。

对应的场景在插件中的Tutorial 1 - Scene中有:NGUI教程:步骤2-Spirit现在让我们添加一些控件,在NGUI菜单中选择NGUI menu -> Create a Widget。

这个向导会指导你建立一些基本的控件。

需要选择所使用的图片集Atlas和字体集Font。

因为是新建的项目,所有按下Atlas和Font按钮没有效果,相反会自动展示最近使用的元素。

unity虚拟展厅课程设计

unity虚拟展厅课程设计

unity虚拟展厅课程设计一、课程目标知识目标:1. 学生能理解Unity虚拟展厅的基本概念,掌握3D建模、场景布置、光照渲染等基础知识。

2. 学生能掌握Unity虚拟展厅的基本操作,如创建项目、导入资源、搭建场景、添加交互等。

3. 学生能了解虚拟现实技术在各行各业的应用,拓宽知识视野。

技能目标:1. 学生能运用Unity软件搭建一个具有特色的虚拟展厅,展示所学知识。

2. 学生能通过操作Unity虚拟展厅,提高解决问题的能力和团队协作能力。

3. 学生能运用所学的Unity技能,为其他学科项目提供技术支持。

情感态度价值观目标:1. 学生对虚拟现实技术产生浓厚的兴趣,激发学习热情,培养创新意识。

2. 学生在团队协作中,学会尊重他人、沟通协作,培养良好的合作精神。

3. 学生通过虚拟展厅的制作,认识到科技与生活的紧密联系,增强社会责任感。

本课程针对高年级学生,结合Unity虚拟展厅的实用性,注重培养学生的实际操作能力和团队协作能力。

课程目标具体、可衡量,旨在使学生和教师能够清晰地了解课程的预期成果,并为后续的教学设计和评估提供依据。

二、教学内容1. Unity软件基础知识:包括Unity界面、基本操作、脚本编写等,对应教材相关章节,为学生提供扎实的操作基础。

2. 3D建模与场景布置:教授3D建模软件的使用,如Blender或Maya,以及如何在Unity中布置场景、导入模型等,涵盖教材中3D建模及场景设计部分。

3. 灯光与渲染:讲解Unity中的光照系统、阴影效果、渲染设置等,使学生掌握高品质虚拟展厅的制作技巧,对应教材中渲染章节。

4. 交互设计:教授如何在Unity中添加交互元素,如按钮、触发器等,以及脚本编写实现简单交互功能,涉及教材中交互设计相关内容。

5. 虚拟现实技术应用:介绍虚拟现实技术在各行各业的应用案例,帮助学生了解行业动态,拓宽知识视野,对应教材中虚拟现实技术及应用章节。

教学内容安排和进度:第一周:Unity软件基础知识学习,完成基本操作和脚本编写练习。

Unity 3D游戏场景设计实例教程 CHAPTER 9 Unity3D室内综合场景实例制作

Unity 3D游戏场景设计实例教程 CHAPTER 9 Unity3D室内综合场景实例制作

首先选中室内场景上层立柱和横梁插入到墙壁内的多边形面片结构 , 如 图 9-37 所示。
可以利用顶视图来快速选取 , 如图 9-38 所示 , 我们发现全部被选择的 多边形面有 300 余面 ,而这仅是对于场景上层结构的优化 ,所以累计来看删 除废面是非常必要的一步。
图 9-37 删除上层立柱的“废面 ”
( 5) 对于模型面数的限制可以适当放宽(见图 9-6) 。
图 9-2 封闭式的室内场景
图 9-3 华丽风格的室内场景结构
图 9-4 玩家与场景模型的比例
图 9-5 室内场景的光影效果
图 9-6 模型面数较大的室内场景
本章的实例内容是在 Unity 中制作一个封闭的室内场景 , 整体制作分 为两大步 ,首先在 3ds Max 中制作场景模型 ,然后导入 Unity 引擎中进 行整体场景的拼建 。在 3ds Max 中首先要制作出场景的整体结构框架 ,然 后通过场景装饰模型丰富场景细节 , 最后再来制作场景中需要用到的各种场 景道具模型 。下面我们开始本章场景模型的制作。
图 9-9 制作场景地面
接下来制作场景内部的立柱模型 ,在视图中创建 8 面的基础圆柱体模 型 ,将其塌陷为可编辑的多边形 ,通过 Connect 连接切线 、Extrude 挤出
和倒角等命令制作出立柱下方的柱墩以及上方的立柱结构 , 如图 9- 10 所示。
图 9- 10 制作立柱模型
然后我们将制作完成的立柱模型复制一份 ,在上方以及两侧制作添加 装饰结构 , 并将立柱中间正面制作出内凹的模型结构 , 如图 9- 11 所示 , 我们将图中左侧的立柱模型作为室内下层的支撑立柱 ,右侧为上层的支撑 立柱 。场景中的立柱结构一方面作为支撑结构 , 让整体建筑具有客观性和 真实性; 另一方面立柱作为装饰结构 , 用来丰富场景细节。

unity3课程设计

unity3课程设计

unity3课程设计一、课程目标知识目标:1. 学生能理解Unity3D的基本概念,掌握场景搭建、物体摆放和基础编程等操作。

2. 学生能掌握Unity3D中的物理引擎和动画系统,运用相关知识制作简单的游戏。

3. 学生了解Unity3D中常用的游戏设计模式,如角色控制、碰撞检测等。

技能目标:1. 学生能独立完成Unity3D场景搭建,合理布局游戏元素。

2. 学生能运用C#语言编写简单的游戏脚本,实现游戏逻辑。

3. 学生能通过Unity3D制作简单的3D游戏,具备基本的游戏开发能力。

情感态度价值观目标:1. 学生培养对游戏开发的兴趣,激发创新思维和动手能力。

2. 学生在团队合作中学会沟通与协作,培养团队精神和责任感。

3. 学生通过游戏开发,认识到科技与生活的紧密联系,增强学以致用的意识。

本课程针对高年级学生,结合Unity3D游戏开发技术,注重实践操作和创新能力培养。

课程目标具体、可衡量,旨在让学生掌握Unity3D基本操作,培养其游戏开发能力,同时注重情感态度价值观的培养,提高学生的综合素质。

后续教学设计和评估将围绕课程目标进行,确保学生达到预期学习成果。

二、教学内容1. Unity3D基础操作与界面认识:包括场景搭建、物体摆放、相机设置等。

- 熟悉Unity3D软件界面和基本功能。

- 学习创建项目和场景,导入资源。

2. C#编程基础:讲解C#语言的基本语法和编程规范,为游戏脚本编写打下基础。

- 变量、数据类型、运算符和表达式。

- 控制结构(条件语句、循环语句)和函数。

3. 游戏物体与物理引擎:学习游戏物体的运动、碰撞检测等物理引擎相关知识。

- 刚体、碰撞器、关节等组件的应用。

- 物理引擎的基本原理和参数设置。

4. 动画系统:了解Unity3D动画系统,学习制作简单的动画。

- Animation组件和Animator Controller的使用。

- 关键帧、动画状态机等概念。

5. 游戏设计模式与实践:学习常用的游戏设计模式,如角色控制、射击、碰撞检测等。

Unity3D4.6UGUI开发设计及案例讲解

Unity3D4.6UGUI开发设计及案例讲解

Unity4.6 UGUI开发设计及案例讲解1.Unity4.6跟以前的版本的最大区别首先在于在层级视图中点鼠标右键时出现的弹出菜单上,它把以前许多的菜单项进行了归类,比如cube sphere capsule….等整合到“3D Object”子菜单中,而且多出一个UI子菜单,它就是UI组件了。

当我们点击UI->Canvas时,就会在场景视图里创建一个画布,不过视图默认是3D显示方式,在Unity4.3以后,增加了一个2D与3D转换按钮,单击此按钮可在3D与2D显示样式之间转换。

UI是2D,为何还要3D呢,在做一些比较复杂的项目时,给用户看时是2D,但我们编辑时,有时还是要用到3D模式的。

2.Canvas是画布,所有的UI组件就是绘制在这个画布里的,脱离画布,UI组件就不能用。

创建画布有两方式。

一是通过菜单直接创建,二是直接创建一个UI组件时,会在创建这个组件的同时自动创建一个容纳该组件的画布出来。

不管那种方式创建出画布时,系统都会自动创建出一个EventSystem组件,这是UI的事件系统。

一.Canvas组件1 Canvas组件的三种渲染模式在Canvas中有一Render Mode属性,它有3个选项,分别对应Canvas的三种渲染模式:Screen Space – Overlay、Screen Space – Camera、World Space2 Screen Space – Overlay:此模式不需要UI摄像机,UI将永远出现在所有摄像机的最前面(即在某个UI的前面是不能再添加其他组件的),就好像是给摄像机贴上了一层膜。

它的最大好处是不需要摄像机,不需要灯光。

3 Screen Space – Camera:此模式需要提供一个UICamera,它支持在UI前方显示3D模型与粒子系统等内容。

不过此模式下,就需在中给它挂一个摄像机。

当挂上摄像机并选择3D显示模式时,我们选中这个摄像机,并移动它,可发现画布会跟随摄像机的移动而移动,且Game视图显示的UI其位置与大小均保持不变,如下图所示:这种模式,虽然UI的显示效果与第一种模式没有什么两样,然而,因在画布与摄像机之间可放置三维物体或粒子系统,那么就可做出许多绚丽的特效。

Unity 3D 图解经典入门教程

Unity 3D 图解经典入门教程
播放按钮和状态栏
按下播放按钮 (Play Button)进入播放模 式。当你的场景在播 放模式下时,你还可 以移动,旋转和删除 物体。你也可以改变 变量的设置。在播放 模式下所做的任何改 变都是暂时的,并在你退出播放模式时重置。你可以再次单击播放按钮退出。在播放模式 下,你可以停止或步进你的游戏。暂停并检视你的场景是昀好的发现问题的方法。 右侧的状态栏有多种不同的作用。它将提供上下文敏感信息和提示,错误信息和来自与脚 本的输出语句。如果你的游戏有任何问题,查看状态栏将是昀好的发现问题的方法。你可 以双击状态栏打开控制台窗口,其中将显示所有的脚本或可见的运行时错误信息。 游戏视图控制栏控制栏上紧挨着视图下拉列表的是宽高下拉列表 (Aspect Drop-down)。这 里,你可以指定游戏视图窗口的宽高比为不同的值。这将影响到 GUI元素的位置。使用它 来测试你的游戏在不同分辨率下的外观。 控制栏上昀右边的是 Gizmos按钮(Gizmos Button)。这将确定是否显示 Gizmos坐标 工程视图(Project View)
有很多需要学习的东西,让我们花费点时间来观察理解上述界面。我们将介绍每一个接口 元素。 概要主窗口的每一个部分都被称为视图(View)。在 Unity3D中有多种类型的视图,但是, 你不需要同时看见所有的视图。不同的布局模式 (Layout modes) 包含的视图是不同的。 通过单击布局下拉控件来选择不同的布局, 该控件位于窗口的右上角。
平移工具热键 W 旋转工具热键 E 缩放工具热键 R
当选中一个物体时你将看到 Gizmo 坐标,每个工具有不同的 Gizmo坐标形式
平移 旋转缩放
点击并拖动当前 Gizmo坐标的任 何一个坐标轴以便平移,旋转或 缩放当前选中物体的变换 (Transform) 组 件 。 你 也 可 以 通 过单击并拖动 Gizmo坐标的中心 来在多个轴上操纵物体。如果你 有一个三键的鼠标,你可以通过单击中键来调整昀后调整的轴而不用直接点击它。 参考变换组件(Transform Component)部分获取更多内容。 手柄位置工具 (HandlePositionTool) 用来控制物体或一组选中的物体的轴心如何和在哪里 显示。

Unity3d5的UGUI简单介绍

Unity3d5的UGUI简单介绍



KISS原则源于David Mamet(大卫马梅)的电影理论。
KISS原则是英语 Keep It Simple, Stupid。 KISS原则是指在设计当中应当注重简约的原则。

简单的理解这句话就是,要把一个系统做的连白痴都会 用。
UGUI ?!

UGUI即UnityGUI是官方 的UI的实现方式,后来因 为效率和可视化程度低, 逐渐被NGUI和EzGUI等 第三方插件替代。 但是,Unity4.6之后呢, 又推出了新的uGUI系统 (据说是把NGUI的作者 挖过去了),包括后面的 Unity5.x都采用了这一新 的系统。 uGUI还在不断完善,应该 会超越NGUI


Unity视图1 Hierarchy视图显示 的是当前场景Scene 里的游戏对象。
为什么提?
uGUI可以直接在 Hierarchy面板中上 下拖拽来对渲染进行 排序,越上面的UI会 越先被渲染。(见例 子)
Unity视图2 Scene视图是对场景 中游戏对象进行可视 化操作。
Game视图显示的是 游戏运行时的图像。





Slider & 滚动区域 & Scroll bar

Slider滑动条 可以设定参数为预定取值范围里的数。 值由滑动柄在滑动条的相对位置决定, 可以用来实现音量控制、发兵数量等功 能。
Direction,方向:从左到右,从右到左, 从上到下,从下到上

Min/Max Value,最小/最大值 Whole Numbers,是否限定为整数


Value 值
On Value Changed,响应事件
Slider & 滚动区域 & Scroll bar

unity mvc ui框架搭建思路

unity mvc ui框架搭建思路

一、概述在游戏开发过程中,UI框架的搭建是至关重要的一环。

Unity作为游戏开发领域中的翘楚,拥有丰富的生态系统和强大的开发工具。

本文将探讨在Unity中搭建MVC(Model-View-Controller)架构的UI框架的思路和方法。

二、MVC架构简介1. ModelMVC架构中的Model是指数据模型,它负责存储应用程序的状态和数据。

2. ViewMVC架构中的View是指界面视图,它负责呈现数据和接收用户输入。

3. ControllerMVC架构中的Controller是指控制器,它负责处理用户输入并更新Model和View。

三、UI框架搭建思路1. 设计数据模型在搭建UI框架之前,首先需要设计好数据模型,包括界面上所需要展示的各种数据和状态。

在Unity中,可以使用C#类来表示数据模型,定义好所需的属性和方法。

2. 创建视图接下来,需要创建视图来呈现数据。

在Unity中,可以使用Canvas、Image、Text等UI组件来构建界面,通过脚本控制UI组件的初始化、显示和更新。

3. 实现控制器最后一步是实现控制器,负责处理用户输入和更新数据模型。

可以通过给UI组件添加事件监听器的方式来监听用户输入,然后调用相应的控制器方法进行处理。

四、具体实现步骤1. 设计数据模型a. 创建C#类来表示界面上的各种数据和状态,例如玩家信息、道具信息等。

b. 在数据模型中定义好属性和方法,以便在视图和控制器中调用。

2. 创建视图a. 在Unity中创建Canvas,并添加需要的UI组件,如Text、Image等。

b. 编写脚本来控制UI组件的初始化、显示和更新,将数据模型中的数据展示在界面上。

3. 实现控制器a. 编写控制器脚本,负责处理用户输入并更新数据模型。

b. 通过给UI组件添加事件监听器,将用户输入绑定到相应的控制器方法上进行处理。

五、总结通过以上步骤,我们可以在Unity中搭建起基于MVC架构的UI框架。

Unity3D游戏场景设计实例教程CHAPTERUnityD引擎的系统功能

Unity3D游戏场景设计实例教程CHAPTERUnityD引擎的系统功能

Unity3D提供了强大的场景编辑器,支持对场景 中的对象进行移动、旋转、缩放等操作,同时支 持多视角编辑。
场景资源管理
Unity3D的资源管理器可以对场景中使用的各种 资源进行统一管理,方便开发者进行资源的查找 、替换和删除。
物理引擎
刚体组件
Unity3D的物理引擎支持为游戏对象添加刚体组 件,实现物体的物理运动效果。
粒子效果
粒子系统支持自定义粒子效果,如火焰、烟雾等,提高游戏的视 觉体验。
动画系统
动画片段
Unity3D支持创建动画片段,对游戏对象进行动画编辑。
动画控制器
Unity3D提供了多种动画控制器,如状态机、混合树等,方便开发 者创建复杂的动画效果。
骨骼动画
Unity3D支持对游戏对象进行骨骼动画编辑,实现逼真的角色动画效 果。
室内场景设计
总结词
室内场景设计主要模拟室内环境,如房间、办公室、商场等,以提供给玩家一个温馨、舒适的游戏体 验。
详细描述
室内场景设计中,需要考虑室内的布局和家具摆放、灯光和色彩搭配等因素,以营造出温馨的室内氛 围。同时,室内场景设计还需要考虑游戏性和剧情需求,设置适当的任务和事件,引导玩家深入了解 室内环境和人物关系。
和沉浸感。
音效与音乐的层次感
03
合理安排音效和音乐的播放时间和音量,以营造出丰富的声音
层次感。
CHAPTER 03
Unity3D引擎系统功能
场景管理系统
1 2 3
场景导入导出
Unity3D支持导入导出多种格式的场景文件,如 FBX、3DS Max等,方便开发者在不同软件间进 行场景的迁移。
场景编辑
优化物理引擎性能
合理设置物理模拟的精度和范围,减少不必要的 物理计算。

基于Unity3D的游戏开发

基于Unity3D的游戏开发

36软件开发与应用Software Development And Application电子技术与软件工程Electronic Technology & Software Engineering游戏虽然益处多但是游戏的开发却并不是那么容易,工作繁琐,门槛高等一系列问题阻碍着游戏的发展,而Unity3D 的出现大大改变了这一现状,大到大型3D 游戏,小到手机2D 小游戏都可以使用Unity 来开发,Unity 有着跨平台性,一次编码可在多个平台同时上线,操作简单,以及省时省力成为了许多开发商的最优选择。

1 游戏界面设计1.1 游戏界面总体设计游戏界面分为三类,开始界面,游戏中界面,和结束界面。

界面的设计相对简单,重点放在游戏的内容,游戏界面流程图如图1所示。

1.2 游戏界面详细设计1.2.1 开始界面的设计游戏开始界面是一张比较炫酷的坦克大战海报,上面分布着两个按钮,一个是开始按钮,另一个是游戏规则介绍按钮,开始按钮点击后进入游戏界面,规则按钮点击后进入规则介绍界面。

游戏介绍界面分布着三个按钮,和图文讲解,界面清晰内容一目了然,左右箭头则是四页规则翻页使用,右下角是一个返回按钮,点击可以返回游戏开始界面。

Play 下的OnClick 及代码如图2所示。

1.2.2 游戏中界面的设计游戏中的界面设计主要说的是坦克身上的画布以及上面的内容。

首先在坦克上添加一个画布(Canvas ),然后在画布中添加三个silder 分别是HealthSlider ,AimSlider ,Flash ,分别是生命的显示,蓄力攻击箭头的显示和闪现技能的显示,每一个slider 都有FillArea 和Fill ,分别为填充的区域和填充的内容,生命的填充区域是一个圆环,填充内容是绿色,攻击箭头的填充区域是长方形,填充内容就是箭头本身,闪现技能填充区域为正方形,填充内容为闪现技能本身。

Slider 中的value 是一个滑动条,改变其量可以改变填充物的填充程度,这就是实现生命显示、箭头显示和技能CD 显示的关键所在。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Unity2d 飞机大战项目讲授一、游戏场景游戏场景我们采用2D的界面,如图,我们创建一个蓝天白云的平面场景,该场景垂直于摄像机并采取正交投影方式。

如果对在Unity3D中创建2D场景尚存在疑惑的朋友可以参考文章《[Unity3D]Unity3D游戏开发之《经典打砖块》游戏的实现》和《Unity3D游戏开发之使用Unity3D开发2D游戏(一)》两篇文章。

我们这里在场景中添加GUIText对象来显示玩家得分等基本信息,脚本定义如下:using UnityEngine;using System.Collections;public class GameManager : MonoBehaviour {//玩家得分private Transform Grade;//玩家生命private Transform HP;//游戏结束private Transform Text;//玩家private GameObject Player;void Start (){//初始化界面Grade=transform.Find("Grade");HP=transform.Find("HP");Text=transform.Find("Text");Text.guiText.enabled=false;//获取玩家对象Player=GameObject.Find("Player");}void Update (){if(Player!=null){//更新UIGrade.guiText.text="得分:"+Player.GetComponent<Player>(). Grade.ToString();HP.guiText.text="生命:"+Player.GetComponent<Player>().Max HP.ToString();}if(HP.guiText.text=="生命:0"){Text.guiText.enabled=true;//立即复活if(Input.GetKey(KeyCode.Y)){Application.LoadLevel("Main");}//退出if(Input.GetKey(KeyCode.N)){Application.Quit();}}}}二、玩家飞机玩家飞机的创建和背景的创建时相同的,这里我们不再多说。

玩家飞机需要完成移动、发射、碰撞的事件处理。

为此我们编写下面的脚本:using UnityEngine;using System.Collections;public class Player : MonoBehaviour {//飞机的移动速度public float MoveSpeed;//飞机的最大生命值public int MaxHP=100;//定义子弹对象public GameObject Bullet;//定义子弹发射位置private Transform BulletPosL;private Transform BulletPosR;[HideInInspector]public int Grade=0;void Start (){BulletPosL=this.transform.Find("BulletPosL");BulletPosR=this.transform.Find("BulletPosR");}void Update (){if(Input.GetKey(KeyCode.A)){transform.Translate(Vector3.left*Time.deltaTime*(-MoveSp eed));}if(Input.GetKey(KeyCode.D)){transform.Translate(Vector3.left*Time.deltaTime* MoveSpe ed );}if(Input.GetKey(KeyCode.W)){transform.Translate(Vector3.forward*Time.deltaTime*(-Mov eSpeed));}if(Input.GetKey(KeyCode.S)){transform.Translate(Vector3.forward*Time.deltaTime*MoveS peed);}//按下空格键,发射子弹if(Input.GetKey(KeyCode.Space)){Instantiate(Bullet,BulletPosL.transform.position,Quatern ion.Euler(new Vector3(0,1,0)));Instantiate(Bullet,BulletPosR.transform.position,Quatern ion.identity);}}#region 减血public void Hit(int Value){if(MaxHP>0){MaxHP-=Value;}else{Destroy(this.gameObject);}}#endregion#region 增加分数public void Add(int Value){Grade+=Value;}#endregion}在这段代码中,Bullet是我们的子弹对象,它从飞机的两个子弹发射位置BulletPosL、BulletPosR发射,向屏幕上方按照一定的速度缓缓移动,当子弹与敌人碰撞时,子弹对象将销毁,同时敌人生命值减少。

Bullet对象对应于我们的一个Prefab。

BulletPosL、BulletPos R对应于飞机上的两个位置。

如图:我们的子弹Bullet是一个绑定了脚本的Capsule。

它的代码定义如下:using UnityEngine;using System.Collections;public class Bullet : MonoBehaviour {//定义子弹的移动速度public float MoveSpeed=10F;//定义子弹的销毁时间public float DestroyTime=2.0F;//定义子弹对敌人的伤害值public int Damage=2;//玩家飞机private GameObject Player;void Start(){Player=GameObject.Find("Player");}void Update (){//移动子弹transform.Translate(Vector3.up * MoveSpeed * Time.deltaTim e);}//碰撞事件捕捉void OnTriggerEnter(Collider mCollider){if(mCollider.gameObject.tag=="Enemy"){//敌人减血mCollider.gameObject.GetComponent<Enemy>().Hit (Damage);//我方得分Player.GetComponent<Player>().Add(1);//销毁子弹Destroy(this.gameObject);}}//当离开摄像机范围时触发销毁事件void OnBecameInvisible(){Destroy(this.gameObject);}三、敌人飞机在我们的游戏中共有三种敌机,我们先将它们制作成预设。

然后通过敌机生成器不断地生成敌机。

如图:和子弹相反,我们希望敌机从屏幕上方以一定速度向下移动,当碰到玩家飞机或者子弹时,将减少生命值。

为此,我们这样定义敌机的脚本:using UnityEngine;using System.Collections;public class Enemy : MonoBehaviour {//移动速度public float MoveSpeed=1.5F;//爆炸public GameObject Explosion;//最大生命值public int MaxHP=100;void Update (){//移动飞机transform.Translate(Vector3.forward*Time.deltaTime*MoveSpee d);}public void Hit(int Value){//如血量不低于0,则敌人飞机掉血if(MaxHP>0){MaxHP-=Value;}else{//产生爆炸效果Instantiate(Explosion,transform.position,Quaternion.Euler(ne w Vector3(90,180,0)));//销毁敌机Destroy(this.gameObject);}}void OnTriggerEnter(Collider mCollider){//如果与玩家飞机遭遇,则双方减血if(mCollider.gameObject.tag=="Player"){//敌机掉血this.Hit(2);//玩家飞机掉血Transform mPlayer=mCollider.gameObject.transform.Fin d("Player");mPlayer.GetComponent<Player>().Hit(2);}}void OnBecameInvisible(){Destroy(this.gameObject);}}接下来,我们通过敌机生成器来不断地生成敌机。

敌人生成器是我们预制在游戏场景中的空游戏体,它位于游戏场景的顶部。

我们将下面的脚本绑定到游戏生成器上,使其可以不断地生成敌人:using UnityEngine;using System.Collections;public class SpawnEnemy : MonoBehaviour {//定义敌人速度public float SpawnTime=1.0f;//定义敌人对象数组public GameObject[] Enemys;void Start (){StartCoroutine("Spawn");}//通过迭代器生成敌人IEnumerator Spawn(){//等待yield return new WaitForSeconds(SpawnTime);//克隆对象Instantiate(Enemys[Random.Range(0,3)],new Vector3(transform.position.x * Random.Range(-1F,1F),transform.position.y,-4),Quaternion.Euler(new Vector3(90,180,0)));StartCoroutine("Spawn");}}其中Enemys对应到我们的敌人预设,每隔一段时间,我们随机地产生一种敌人,该敌人将从屏幕上方缓缓向下移动。

相关文档
最新文档