MonoBehaviour类的实例化
在Unity的资源中MonoBehaviour是比较特殊的一类,
在开发中,继承MonoBehaviour类的脚本只有通过挂载到某个GameObject上才能够被实例化(即拖拽到Inspector上).并且可以在Inspector上修改Public变量,
那么问题就来了,Inspector中修改的变量值,是不会修改脚本本身的,那么这些变量的值保存在哪里?
其实在Unity中只要是GameObject的Inspector界面中的组件都是会生成引用的,而引用在生成游戏后都保存到了.assets文件中.
MonoBehaviour保存有实例化脚本的关键信息,在序列化后会关联产生PPtr<MonoScript>,而PPtr<MonoScript>指针指向一个MonoScript的资源这个文件的信息非常简单直接标明了MonoBehaviour所对应的程序集,命名空间,类信息等.(MonoScript提供了MonoBehaviour实例化最基本的信息,是哪个类)


在通过MonoScript获得最基本的信息之后,根据这个信息获取相应的类信息后,MonoBehaviour中的二进制数据就能够解析并且填充到类中的各个变量里,这样成功实例化就成功了.

通过上面的流程大致摸清楚了MonoBehaviour的解析和实例化流程,
讲一个用到的例子:
如果有一个MonoBehaviour中保存了大量的文本信息,而这些文本信息是我们需要提取的内容,
当用UABE或者assetstudio打开时通常就会弹出窗口需要我们自己添加这个程序集的路径,
在添加完后MonoBehaviour才能够被解析.
如果这过程中我们选择不添加程序集的路径,则会解析失败.

可以得出一个结论:如果单纯把MonoBehaviour导出成二进制(raw),由于二进制文件中并没有MonoScript的详细信息只有指针信息,所以解析难度较大,需要根据上面的流程自己写个脚本对其进行解析,进而也可以实现MonoBehaviour一些较简单的修改.