unity笔记

142 阅读4分钟

无论做什么项目,首先要技术选型,选择适合项目的技术解决方案,之后根据业务需求分解功能,提取公用模,然后,在制作的过程中优化工作流程,提高开发效率

技术选型

什么是游戏引擎

引擎就是开发框架,封装了很多游戏开发中常用的功能,提供了很多方便开发的编辑器,提高开发效率

为什么要用引擎

每一个平台(pc,ios,android,h5)的操作系统调用底层API都是不一样的,比如加载图片或者获取用户输入的接口都不一样,如果我们开发一种游戏,要上架pc,ios,android等平台,就要写好几套代码,所以需要引擎来整合不同平台的通用API接口,实现使用引擎可以只写一套代码适配所有平台

业务需求

  1. 启动logo
  2. 热更新
  3. 注册登录
  4. 用户系统与主场景信息同步
  5. 英雄系统
  6. 主线副本系统
  7. 背包系统
  8. 酒馆系统
  9. 商店系统
  10. 战斗系统
  11. 竞技场系统
  12. 邮件系统
  13. 工会系统
  14. 工会boss系统
  15. 排行榜系统
  16. 日常任务系统
  17. 主线任务系统
  18. 爬塔副本系统
  19. 好友系统
  20. 签到系统
  21. 聊天系统
  22. 新手引导
  23. 广告接入

跟我玩的第七史诗一样,这些功能都有

认识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: 死循环中每循环(帧)一次,调用一次该函数