目录
9.框架设计里面你常用的第三方库和插件是哪些?解决哪些问题?
1.Unity项目框架是如何设计的?有哪些原则?
- 管理类:这类脚本能控制程序进度、调度场景、管理功能类,基本算是程序的大脑,一般是单例
- 功能类:负责在程序中完成具体功能的,比如塔防游戏里的塔、怪物、技能、子弹,受管理类控制,自身有不同的功能
- 工具类:相当于工具箱,比如 Mathf类 ,比如组建协议的脚本,计算时间,数字转换等。
- 独立类:自己独立功能独立周期的脚本,比如 定时销毁:启动-计时-销毁。
- 单一原则:明确类的定义,只做一件事。提高类的可读性,更加好维护,降低耦合度。
- 里氏替换原则:子类可以实现父类的抽象方法,但不能覆盖。子类可增加自己特有方法。
- 依赖倒置原则:高层模块不能依赖底层模块,二者都依赖抽象,细节依赖抽象,抽象不依赖细节。
2.资源管理是如何做的,如何更新与打空包?
unity 中的资源来源有三个途径:一个是Unity自动打包资源,一个是Resources,一个是AssetBundle。
- 自动打包:unity场景中直接使用到的资源会自动被打包到游戏中。在场景加载时,由unity自动加载。这些资源只需放在Assets目录下即可,不需要关心打包和加载。这些资源都是静态加载的,实际开发一般会动态加载。
- Resoures:在Assets目录下创建Resources文件夹。文件夹的资源,无论是否用到都会被打包。并且可以通过Resource.Load方法动态加载。缺点是:资源都直接打包了,没法做增量更新。
- AssetsBundle:通过编辑器脚本把资源打包成多个AssetsBundel。这些AssetsBundle和游戏包是分开的,可通过www类来加载。优点:可做分包发布,页游随游戏进程增量下载,或者手游资源过大,把一开始用不到的内容做成增量包,玩到的时候再下载。
Unity会根据依赖关系自动生成所有包,每个包生成一个.manifest文件,这个文件描述了包的大小,crc验证,包之间的依赖关系等,通过manifest打包工具在下次打包时判断哪些资源有改变,加快打包速度。manifest工具自己用,发布时并不需要。