如何分析源码
一、系统
- 先要会用,要搞清楚整个功能。
- 直接看示例文件
- 根据使用的API入手
- 看看有什么属性,分析他实现的步骤及猜测
- 确定功能相关数据结构
- 查看模块的划分,猜测其每个系统的功能。建立宏观视角,不要直接陷进代码中,否则会花很长时间。
- 序列化:反射显示、存储、数据->对象序列化
- 根据模块去查看示例代码,并实现的效果记录
- Utils : 一般都是一些工具方法,是直接可以从他的项目中拿到你的项目中使用的,我们可以去积累这样的utils。
- XXXhellp:都是一些涉及了框架相关API的工具方法。
- 一般来说,有生命周期的脚本都是作为子脚本,类似mono的那种,有start方法之类的。
- 把继承结构搞出来,UML图,如果时间够的话。
- 看源码是为了学习一下基础,看看他的架构,学习一下思路之类的
二、继承结构、协作流程
- 查看入口、查看框架启动器
- 不用追的太深入找到最主要的核心方法。
- 不管这个框架是做什么的,都需要unity的API,我们可以根据它使用的API来寻找线索。
- 根据类名、方法名来判断这个方法是做什么的。
- 属性标记(方法或者类上面的方括号里面的东西叫属性),可以用于反射来创建或者获取、注册添加等等一系列的操作。 属性:标记方法或者类 使用反射调用可得到。一般配合消息系统或者方法注册机一并注册等。 也可以方法过滤,保留特定的方法,将其赋给某个委托。 在某个特定的时间:比如ongui时,遍历委托集合,调用。
三、流程
- 先去用
- 猜测,主动地猜测,不要一脸茫然的
- 大概猜一下原理
- 按照系统/功能划分一下模块
- 找到核心的模块,不断地问自己,如果要我实现插件,我要怎么做。
- 不要乱,要有一个结构图,很容易把自己弄糊涂。
- 不用看懂代码,知道最主干的东西是什么就行。
- 搞一下集成结构
- 搞一下协作流程-初始化流程等
四、细节问题
- 猜测、画图等
- 用组合模式等实现继承方法,例如:动物类有3个子类:鸡、鸭、鹅,他们都有方法叫吃。动物园是管理所有的动物,有一个喂食的方法,调用了喂食的方法,就调用所有动物的吃的方法。兄弟这个贼形象。
初学者须知
- 多看看书本上的知识
- 多看看博客什么的