Unity提供了灵活多变的编辑器拓展API接口,通过代码反射,可以修改一些系统自带的编辑器窗口。此外,丰富的EditorGUI接口也可以拓展出各式各样的编辑器窗口。
资源加载与优化
思考并回答以下问题:
- 什么是资源?什么是对象?
- 什么是编辑模式?什么是运行模式?
- 编辑模式下可以访问加载到硬盘上的任意资源吗?如何访问?
- 编辑模式下的资源可分为两类:一类是引擎可识别的资源,另一类是引擎无法识别的资源,各举例子。
- 在编辑模式下AssetDatabase读取资源需要什么硬性条件?如果不满足,使用什么类读取?
- GameObject.Instantiate()只能创建新对象,这样将丢失Prefab的引用是什么意思?
- Resources目录是干什么用的?
- 每个meta文件都会记录guid这个重要信息。guid是什么?
- 自己总结:Resources.Load<>是加载资源,后面还需要Instantiate才能变成对象,这就是资源和对象的关系,怎么理解?
MVC
思考并回答以下问题:
- 所谓的管理就是维护字典,然后对字典进行增删查。怎么理解?
- 为什么Model和View实现类都需要维护一个自己的名字?有什么好处?没有会怎么样?
- 为什么Model和View字典都是用自带的Name字段作为key,而Controller字典是用事件名?
- 为什么Controller字典的Value用Type类来存储?需要用到的时候再实例化,预先实例化浪费内存。但之前需要管理,所以用typeof()得到Type对象,用到的时候再通过反射进行实例化。怎么理解?
- Activator.CreateInstance是干嘛用的?
- 所有启动的地方都要写在Awake中。怎么理解?
第13章-连接万物的图
思考并回答以下问题:
- 什么是图?怎么用代码表示图?每个顶点都是一个对象,维护一个列表。怎么理解?
- 什么是顶点?什么是边?怎么才叫相邻?
- 什么是有向图?什么是无向图?
- 什么是二度联系人?
- 什么是广度优先搜索?
- 什么是加权图?要往图里加上权重,要把表示邻接点的数组换成散列表。怎么换?
- 以二维数组来保存朋友关系会在查询a的朋友时有什么问题?
- 遍历图还需要一个队列。怎么理解?
- Neo4j是什么软件?
StrangeIOC
思考并回答以下问题:
- command必有对service或model的引用。command必有的Execute里面执行的是service的方法。command里面没有维护dispatcher,service里面维护。怎么理解?
- 让容器去决定依赖关系。怎么理解?
第12章-让一切操作都更快的二叉树
思考并回答以下问题:
- 什么是树?什么是二叉树?
- 二叉树既可以保持顺序,又可以快速查找、插入和删除。为什么?
- 先创建节点类,然后再用节点对象构建二叉树类。怎么理解?
- 二叉树查找的时间复杂度是O(log N)。因为每行进一步,我们就把剩余的结点排除了一半。怎么理解?