无论做什么项目,首先要技术选型,选择适合项目的技术解决方案,之后根据业务需求分解功能,提取公用模,然后,在制作的过程中优化工作流程,提高开发效率
技术选型
什么是游戏引擎
引擎就是开发框架,封装了很多游戏开发中常用的功能,提供了很多方便开发的编辑器,提高开发效率
为什么要用引擎
每一个平台(pc,ios,android,h5)的操作系统调用底层API都是不一样的,比如加载图片或者获取用户输入的接口都不一样,如果我们开发一种游戏,要上架pc,ios,android等平台,就要写好几套代码,所以需要引擎来整合不同平台的通用API接口,实现使用引擎可以只写一套代码适配所有平台
业务需求
- 启动logo
- 热更新
- 注册登录
- 用户系统与主场景信息同步
- 英雄系统
- 主线副本系统
- 背包系统
- 酒馆系统
- 商店系统
- 战斗系统
- 竞技场系统
- 邮件系统
- 工会系统
- 工会boss系统
- 排行榜系统
- 日常任务系统
- 主线任务系统
- 爬塔副本系统
- 好友系统
- 签到系统
- 聊天系统
- 新手引导
- 广告接入
跟我玩的第七史诗一样,这些功能都有
认识unity项目文件目录
- Assets 工程资源文件夹(美术资源,脚本等等)
- Library库文件夹(unity自动生成管理),里面的文件不会自动删除,比如把引用的内容时候删除,库里面的内容不会被删掉,所以文件夹会越来越大,当很大的时候可以手动删除,然后重新打开项目,会再次根据项目引用情况自动生成该目录
- Logs日志文件夹(由unity自动生成管理,记录报错崩溃等等信息)
- Packages 包的配置信息 (unity自动生成管理,用于放置一些官方组件和第三方插件)
- ProjectSettings 工程设置信息(unity自动管理)当前Unity工程下的各项设置参数记录
- UserSettings 编辑器的用户构建设置 记录用户的使用偏好,比如Unity编辑器的布局方式等
总之,Assets、UserSettings、ProjectSettings记录了项目最基础的信息与资源,不能删除,其他可以删除(因为再次打开项目时又会自动生成),上传git或svn的时候可以只上传这三个文件即可。
小细节
- 在把图片资源导入Assets里时,会自动生成.meta文件,记录图片基础信息,有唯一的guid,在unity里,用这个guid识别配置文件,比如我们修改文件名,但guid不会改变,所以引用资源时候,还是这个图片
- 场景创建后,需要在build settings中把场景加入到场景列表中,不加入的场景在运行时,不会被打包进来,也就无法切换到该场景
- 运行时候修改游戏物体属性,运行结束后,会复原
什么是游戏物体
unity中所有非场景元素都是游戏物体,所不同的只是每一个游戏物体上所关联(或挂载)的脚本或组件不同
Hierachy
- 层次视图,展示当前场景中,所有游戏物体和他们的层次关系
- 每个场景有序号id,unity默认在启动时,加载序号为0的场景
- 有父子层级关系的游戏物体对应的属性会一起变化(父物体和子物体)
Inspector
- 游戏物体属性
- 组件(本质是脚本),
- 脚本
- Transform,Position设置相对于父的位置,Rotation旋转属性,Scale缩放属性
unity游戏运行原理
基本原理
当点击运行时,unity会先加载场景序号为0的,递归遍历该场景的所有子物体,根据物体状态展示,同时,在运行到关键的时间点,会产生事件,遍历每一个被激活的物体的脚本,脚本中必须继承MonoBehaviour,执行脚本中对应事件的响应,这些事件响应函数就是生命周期函数
游戏在运行时,是一个死循环,每次循环都会渲染(展示图片),然后处理游戏逻辑,同时调用脚本的生命周期函数
Start: 当脚本实例化后,会调用一次,类似构造函数
Update: 死循环中每循环(帧)一次,调用一次该函数