Unity引擎及编辑器C#源代码赏析(二)—项目组织

作者: koo叔 分类: Unity3D 发布时间: 2018-03-30 22:51 编辑

前言

上篇讲到了通过git将源码下载到本地,并大概了解一下目录结构,今天主要从工程项目的角度来看一下,Unity是如何组织的。

找到sln文件

sln文件是整个项目的解决方案文件,在UnityCsReference/Projects/Csharp/ 文件夹下面:image
双击用Visual Studio打开即可。

项目组织

打开后会看到Unity C#解决方案下有6个子项目分别是DataContract,UNetWeaver,Unity.CecilTools,Unity.SerializationLogic,UnityEditor,UnityEngine.image

DataContract子项目

这个项目下只有三个文件,IEditorModule.cs,PackageInfo.cs,PackageVersion.cs。主要是包管理和包版本比较。被UnityEditor子项目引用,用于编辑环境下,不用于运行环境。

UNetWeaver子项目

这个项目下包括Helpers.cs,MessageClassProcessor.cs,Program.cs,SyncListStructProcessor.cs,UNetBehaviourProcessor.cs,UNetWeaver.cs。其中只有Program.cs被UnityEditory子项目用到,其余都是在此子项目内部调用。这个项目的主要功能是用来处理/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll网络模块相关的注册解析。

Unity.CecilTools子项目

这个项目下包括MethodDefinitionExtension.cs,
ResolutionExtensions.cs,TypeDefinitionExtensions.cs
TypeReferenceExtension.cs,CecilUtils.cs,ElemntType.cs,这些类应该和Mono.Cecil有关。主要处理C# 编译成的中间语言(IL)的一些内容。

Unity.SerializationLogic子项目

这个项目下包括UnityEngineTypePredicates.cs和UnitySerializationLogic.cs主要用于编辑环境下的序列化相关内容。

UnityEditor子项目

这个项目就是我们在游戏开发时经常用到的Editor相关的类,常用的类的定义和实现都在这里。

UnityEngine子项目

这个项目主要就是运行时,写游戏逻辑用到的类全在这里。可以到相关目录下找。

总结

从上面项目组织情况看,还是比较清晰的,前四个子项目主要是一些辅助功能,命名空间都以Unity开头,我们不能直接使用。后面两个项目的命名空间是UnityEditor和UnityEngine,也就是我们常用的两个工具。今天先分析到这里。之后会尝试分析一下主要的类及关联关系。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

你的email不会被公开。必填项已用*标注

更多阅读
标签云