Unity3D游戏开发幻灯片

上传人:日度 文档编号:147999165 上传时间:2020-10-15 格式:PPT 页数:58 大小:2.20MB
返回 下载 相关 举报
Unity3D游戏开发幻灯片_第1页
第1页 / 共58页
Unity3D游戏开发幻灯片_第2页
第2页 / 共58页
Unity3D游戏开发幻灯片_第3页
第3页 / 共58页
Unity3D游戏开发幻灯片_第4页
第4页 / 共58页
Unity3D游戏开发幻灯片_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《Unity3D游戏开发幻灯片》由会员分享,可在线阅读,更多相关《Unity3D游戏开发幻灯片(58页珍藏版)》请在金锄头文库上搜索。

1、1,北京传智播客教育 ,Unity3D游戏开发,讲师:杨中科,2,天神传,神 庙 逃 亡 2,最终幻想V,武士2复仇,Unity3D开发的 游戏,3,仙剑奇侠传OL,调教三国,小小忍者,绝代双骄,Unity3D开发的 游戏,4,游戏开发和Unity3D简介,演示高铁惊魂、打炮弹。 Unity3D:跨多平台(IOS、Android、Windows Phone、Windows、Flash、XBOX360、PS3、Wii等)游戏引擎,可以开发2D、2.5D、3D游戏。appstore手机上有1500+款用Unity3D开发的游戏。 什么是游戏引擎?开发简单、高度封装(OpenGL、DirectX)。

2、其他游戏引擎: Cocos2d、UDK、 Unreal Engine 3、 Quest3D等。 Why Unity3D ?跨平台;费用便宜(非开源,有免费版),5,游戏开发待遇,0809就业班冯伟,深圳一家小公司,Unity3D手机2D游戏开发,试用期工资8.5。,5000以下占25%; 50007500元占23%;1万以上16%; 金山奖励剑侠世界的项目组成员,3辆宝马3,4辆马自达6,6,游戏开发常识,游戏术语: 手游(新增长点);网游(捉迷藏OL,U3D);端游(需要下载客户端);页游(WebGame) FPS(First Person Shoot/Frame Per second);M

3、MO( Massively Multiplayer Online,大型多人在线);RPG(虚拟人生,浪漫庄园) 2.5D(用2D模拟出来的3D。中国2D网游占据8成市场);锁定视角3D(视角固定,不足够炫,但是不头晕,开发难度低,建模建3面即可) 第三人称;第一人称; 单机游戏;网络游戏:大公司使用自主引擎,中小公司使用Java开发的 smartfoxserver 、C#开发的Photon(底层C+) 等; 运营商、游戏代理、渠道商:开发商自己要处理推广、支付、打击盗版等,一般和渠道商合作分成。比如捕鱼达人android版90%收入来自渠道。Android手机游戏开发的困境,渠道太多,N多打包

4、; 游戏公司分工:策划;美工;程序员;测试;客服等。黑话:主程、主美;,7,Unity3D基本使用,通过一个例子理解U3D开发工具使用(对坐标系暂时先了解): Hierarchy中Create一个Cube立方体,在Inspector中修改它的Position XYZ为0; 添加一个光源照亮场景Directional light,Position XYZ为(0,2,2); 修改摄像机MainCamera(摄像机看到的就是屏幕看到的)的Position为(0,2,-6),看起来清楚一些 Project中Create一个C# Script,编写一个拖动Cube旋转Cube的功能。见备注,先粘贴过来能

5、运行即可。 把脚本拖到Cube上(拖到Hierarchy中比较准确)。 点击 在模拟器中启动运行,再点击停止运行 项目的保存和再次加载:一般打开unity场景文件。,8,第一个例子解析,Unity支持C#和JavaScript,国内用C#的占大多数。 JavaScript不是标准语法,叫UnityScript更合适。使用Mono实现C#跨平台,C#编辑工具也是MonoDevlop 。如果Unity提示代码编译错误,则到MonoDevelop中Build一下就能看到是什么错误。脚本要取有意义的名字,脚本的名字要和类名一致。 Start、Update是系统预定义的一些方法,当相应事件发生的时候系统

6、就会调用脚本的相应方法,后续还有OnMouseDown、OnGUI,为了简化这些方法不是override父类的用法,类似于Main的调用约定。 脚本是依附于游戏对象的,事件和操作的对象也是当前脚本所在的游戏对象。脚本只能依附于游戏对象或者由其他脚本调用才会运行,一个脚本可以放到多个游戏对象上,是多个实例。一个脚本的多个实例和其他脚本之间互不干扰。,9,案例深入,项目运行过程中的修改不会保存。其实相当于调试时改代码立即生效的功能,只是调试结束一切调试期的修改都消失 抗锯齿:主菜单EditProject SettingsQuality,AntiAliasing选为4x(越大越平滑但是越占资源) 体

7、验跨平台:FileBuild Settings,构建为exe、flash,如果有android、ios等开发环境还可以构建为手机软件。 理解和美工的分工:在3dsmax中设计出3d模型、贴图出来(打开“希腊圣殿场景”),然后ribbon按钮导出成FBX格式,FBX拖入Project,接着把模型拖入到Hierarchy,调整它的坐标。把旋转脚本拖到“圣殿”上这样圣殿也就跟着一起旋转了,把Cube的脚本去掉(Inspector中Remove掉Component即可)这样Cube就不旋转了。必须按照Unity3d标准要求设计的3dsmax才能正确导入,资源下载地址: 等。项目路径和FBX文件名不要有

8、中文,10,编辑器的使用的使用,Scene: 高效操作:按住鼠标右键拖放可以改变预览的时候看的方向;按住滚轮拖放可以横向改变看的部分;滚轮可以前进后退;Hierarchy中双击可以聚焦到元素,放大区域;点击 按钮 选中一个游戏对象拉着三个方向的箭头就可以在三个方向修改元素的位置。 方向键可以更方便的在XZ方向漫游,按着Shift可以加快速度。 Hierarchy中Create的时候会自动在当前坐标创建对象,方便建模; Inspector: 暂时想禁用试一下的游戏对象可以在Inspector前的钩去掉 暂时想禁用一下的组件也可以把钩去掉,永久删掉就“Remove Component” Unity

9、多开:建一个快捷方式加上“-projectPath”参数即可。,11,脚本基础,C#脚本不支持命名空间,脚本在Project中的显示名称不要加cs,类名要和cs名称一致,所有类继承自MonoBehaviour。跟具体游戏对象无关的脚本可以放到摄像机MainCamera中。不要不正确的给一个游戏对象设置多个脚本对象 初始化不要放到构造函数中,而是放到Start()方法中。 放到游戏对象中的脚本(实例化)可以在Inspector中修改属性,get/set写法属性不被识别,直接public字段就能当属性用,private或者不写修饰符就是私有字段。 脚本中文问题:代码中有中文的话会有乱码问题。到资源

10、管理器中打开项目的Assets文件夹(或点右键Show In Explorer),用unity3d目录下的EditorDataToolsUniSciTE下的UniSciTE.exe打开cs文件,FileEncoding改为UTF-8 with BOM,敲个空格造成修改,然后保存即可(可以修改cs文件打开方式更简单)。最好一开始就修改编码,否则会很麻烦。,12,程序的调试,程序的运行时调试消息输出:Debug.Log(),显示到Console视图(windowconsole打开) 项目的断点调试:启动MonoDevelop,主菜单ToolsOptionsUnityDebugger的Editor选

11、择Unity开发环境Unity.exe的程序的路径;然后MonoDevelop打开项目(注意Unity不要同时打开这个项目),然后主菜单RunRun WithUnity Debugger就可以启动调试了。建议使用Debug.Log()调试,优秀程序员的素质。,13,GUI概念,无论摄像机拍到的图像时怎么变的,GUI永远是显示在屏幕上,不受 变形、碰撞、光照的影响。,14,GUI基础,GUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI,按钮:GUILayout.Button(“Hello”); 只读标签:GUILayout.Label() 修改控件的颜色:GUI.backgroundCo

12、lor = Color.red;设置背景色,GUI.color设置前景色,影响OnGUI中之后的控件直到下次修改颜色为止。,15,OnGUI易错,Hierarchy中的游戏对象不一样,OnGUI是每帧擦除重绘的(有可能一帧调用多次)。GUILayout.Button(“Hello”)应该理解为“画一个Button控件”而不是“创建一个Button控件”: if(tick%10050)/每50帧画一次Buton GUILayout.Button(Hello); tick+; 因此,TextBox的输入要成员变量保存当前的值,否则输不进去。 GUILayout.TextField(“yzk”) ,

13、参数为要显示的值,返回值为用户输入的值。 username = GUILayout.TextField(username);,16,按钮的点击,响应按钮点击:GUI中没有事件概念,鼠标点击了按钮Button返回值就是true,例如: if(GUILayout.Button(Test) Camera.mainCamera.transform.Translate(Vector3.back); 思考下面的代码有什么问题,怎么解决: if(GUILayout.Button(Test) GUILayout.Label(Clicked Test); 案例:实现登陆功能,显示登陆结果。演练一下。常见错误:O

14、nGUI大小写;文件编码;运行提示“Compiler Error”,17,GUILayout布局,GUILayout布局默认会伸展控件的尺寸。Button等控件支持params GUILayoutOption options可变参数数组,可以通过GUILayout.Width(30)返回一个设置控件宽度的GUILayoutOption对象, Height()、 MinWidth()、MinHeight()等同理。例子: GUILayout.Button(Test,GUILayout.Width(500),GUILayout.Height(30) GUILayout采用线性布局,类似于Stack

15、Panel,默认是纵向布局。通过GUILayout.BeginHorizontal();开启和GUILayout.EndHorizontal()结束一个横向排列区域,同理BeginVertical() 、EndVertical()。 如果嫌控件太挤,可以使用GUILayout.Space(30);增加若干像素的间隙。,18,常用GUI控件1,密码框:pwd = GUILayout.PasswordField(pwd,*),第二个参数为掩码字符,注意帧刷新的问题。 Button只有鼠标抬起才会返回true,这样用Button做发射子弹就不能按下一直发射,可以使用RepeatButton,这样按下

16、期间会一直返回true。案例:Button和RepeatButton实现游戏对象移动。 Tab页: electedToolBarId = GUILayout.Toolbar(selectedToolBarId,new string“装备”,“经验”,“队友”); 返回值为激活的按钮的序号。 复选框:isMuted = GUILayout.Toggle(isMuted,“静音”); 多行文本区: msgBody = GUILayout.TextArea(msgBody,GUILayout.Width(300),GUILayout.Height(300);,19,常用GUI控件2,滑动条:纵向, sliderValue = GUILayout.VerticalSlider(sliderValue,0,100);返回值为当前值,第二个参数为最小值,第二个为最大值。 HorizontalSlider()横向 区域Area,相当于一个控件的盒子, Area中的控件跟着Area移动, BeginArea()开始一个区域,参数指定区域的大小和坐标, EndArea()结束区域

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号