Unity 在 GitHub 发布 Unity 引擎和编辑器的 C# 源代码

来源:投稿
2018年03月27日

3月23日我们在GitHub上发布了Unity引擎和编辑器的C#源代码,仅供Unity学习参考使用。

为何如此决定

为了了解或改进自己的Unity项目,一直以来有用户对Unity .NET程序集反汇编,我们的服务条款明确允许这样做。但反汇编有二大缺点:

  • 尽管这不难做,但过程还是十分麻烦。

  • 反汇编后导出的结果不会给出最初的注释和变量名,这样要理解代码会很困难。

为了提供方便,不少社区成员不辞辛劳向GitHub仓库提供反汇编的代码。实话说,我们对这件事的感觉比较复杂。一方面,我们很高兴看到用户为壮大Unity社区提供实用的服务。但另一方面,这种行为从严格意义上说是违法的。虽然我们的服务条款允许进行反汇编,但服务条款里却不允许将这些代码发布。

我们经过良久的考虑,决定解决这些问题的最好办法只有一个:那就是我们自己发布源代码

要点解释

为了防止产生误解和标题党,我们认为需要花些篇幅具体解释一下我们的做法。

我们不会将Unity开源抱歉,我们也没有开源的计划。我们并非不喜欢开源,事实上我们其实有很多开源项目,例如:UI系统,Networking等。请参考:Unity开源项目参与指南

如果将来我们再也不需要源代码,而且这样做不会影响我们的业务,我们会开源所有Unity的代码。但在可以预见的将来中,我们会保有主引擎的所有权,C#参考源代码会在特定协议下发布,用户仅可以阅读代码,不可以修改代码。请查看完整的协议文本,请先了解所有细节以免触及底线做违法的事。

我们也不会接受C#参考源代码的合并请求。我们既没有法律框架也没有组织框架来处理这些合并请求,更不用说准备合并请求这个行为本身就已经违反了参考协议。

我们希望能从中了解到C#参考源代码有哪些错误,请使用Unity Bug Reporter来汇报错误,不要只是在GitHub上提交合并请求。注意,使用Unity Bug Reporter来汇报错误时候,需要详细描述问题,指出在参考源代码中有哪些与问题相关的代码行或文件。

源代码的用意

所有进入UnityEngine和UnityEditor托管程序集中的C#源,其每个版本都会从Unity 2017.1开始。在未来的日子里,这个库将会在每次新版本发布后不久进行更新。

通过查看每次提交,你可以发现在后续版本之间发生了哪些变化。例如:你可以看到Unity 2017.3.1 patch 2的更新中修改了这些文件:

下载源代码及参考信息

小结

以上就是这篇文章的所有内容。请享受将其用于Unity学习参考的过程。并且继续支持Unity吧!

来自:Unity官方微信公众号

展开阅读全文
16 收藏
分享
加载中
精彩评论

引用来自“紫竹蜚凝”的评论

感动,即使是有些限制的开源,也是c#的一个大进步!!!
这跟 C# 没啥关系.... .net framework 和 C# 很早以前就是开源的
2018-03-27 14:59
7
举报

引用来自“紫竹蜚凝”的评论

感动,即使是有些限制的开源,也是c#的一个大进步!!!
换个角度:不想真正开源却还想要得到开源的社区支持 😳
2018-03-27 14:57
6
举报
向全世界找免费的测试人员
2018-03-27 15:48
4
举报
有些时候你想进一步了解验证unity c#层对你的关注点到底做了些什么,虽然可以反汇编,但总免不了一些地方要更花时间更费心智去猜测、推导的。现在人家直接公示源码注释让你参考,一目了然,大大提高了效率。对玩unity的开发者自是会感恩的,毕竟人家是商业引擎靠此吃饭的;对不玩unity的吃瓜群众多是会误解的:)
2018-03-27 21:02
1
举报
感动,即使是有些限制的开源,也是c#的一个大进步!!!
2018-03-27 14:43
1
举报
最新评论 (20)
好像之前这里有人怼我,我再看了一遍,不是看那人的回复,仔细看了官方的中文说明,居然可以把开源说的是自己开源(据说NGUI的作者为官方写了一个UGUI,其实也刚好应该是一个人的工作量),然后把商业源码免费公布,以为这就是开源,这其实有点看轻开源2字(不过算了,一千个人心中有一千个哈雷穆特,每个人的世界观不同,而且估计现在的开源中国这里的人也大部分和他一样理解),unity比较吊的是他的商业模式,他所谓的“开源“与否,真的不重要了,开源的精神值得提倡,开源的社区值得花时间维护,但是开源的代码真的一文不值(主要代码不是我写的,所以我乐意这么说)0,unity发展的,如同steam,也如同mac os,早已是一独角兽,unreal4根本没法追赶,在扯远一点,可以扯到元朝把宋灭了,但把那些书籍典故灭了吗?有统一度量衡吗,反正很快就又打回原形回草原去了,到底是商业成就了开源,还是开源造就了商业?其实都不那么极端的,有哪一个科技公司敢说自己没用过开源库,而这个开源库又没有引用到上世纪7~80年代的代码和理论?甚至是更早,本人不才就用过一个IBM 83年的Input库,现在再看这个Unity的官方说法明显就是切割的很厉害,他也说的很清楚了,是一批反编译的人倒逼他们开源的,开源并不是一个标签,这批反编译的人就是开源人,xamarin厉害的地方是让一个恐龙(微软)默认开源,你做到一定成就,成了独角兽公司,牛,你开源做到一定成绩,不开源的公司被你感染,同化,也是牛。大部分人现在说的开源,包括我,我也被你们同化了,我们现在说的开源,其实只是集中说了开源的商业运作这一小块,人家本身商业运作也是很大一个范畴,很多分工,不说商业,仅说技术,这开源历史,开源过程,开源进程,演变,贡献者,开源精神等等,都差太远了,这我昨天加班加太晚的一点突发奇想,Unity当初选择了monodevelop的时候,就注定要被同化,选择了做软件公司,就注定要被开源,这天下大势,合久必分,分久必合,无出其右
2018-08-28 09:46
0
回复
举报

引用来自“紫竹蜚凝”的评论

感动,即使是有些限制的开源,也是c#的一个大进步!!!

引用来自“Rwing”的评论

这跟 C# 没啥关系.... .net framework 和 C# 很早以前就是开源的

引用来自“sidney9111”的评论

我还真不知道.net framework和c#哪里开源了?linq有开源吗,sharepoint有开源么?要是微软真开源了,也不至于到今天这地步,天下大势,合久必分,分久必合,就好比oschina这里,以为自己开源了,也确实是挺开放的,结果其实根本没有开源的路线,理论,和框架,既没市场,也没人才,就只导致现在这情况。。。。。乌烟瘴气

引用来自“Rwing”的评论

真是不想回复杠精。。但是不回复又怕天下人以为杠精是正确的。首先 .net framework和 C#是开源的,这新闻和源代码铺天盖地,不用我给你提供吧?linq 可能你都不知道是什么,但我也给你解释下,如果你只是 linq 类,那么他是 .net framework 的一部分,所以也开源,如果你指的是 linq to sql,那么他现在进化为 entity framework,也是开源的。至于你说 sharepoint,一个商业软件为什么要开源,就跟office 一样、跟金山 wps 一样,跟谷歌 gmail 一样,跟苹果 keynote 一样,你怎么不要求他们开源?

引用来自“sidney9111”的评论

我也是真不想回复你这种只会看新闻和背概念的,如果微软开源了,为什么还要收购Xamarin,就让开源百花齐放不是很好吗?对于商业运作你是根本不懂,就和你说所技术,哥当年第一批做的monodevelop,还跟着讯飞做framework最小化,哥从来都不管是不是商业,又或者某商业机构是否说他开源,阿里开源了,你有开源代码?腾讯也开源了,你干得过腾讯?小米,锤子也说他开源,和你有半毛线关系?开源是一种信仰没错,但不是用来打嘴炮的,哥当年上codeproject的时候,github还没诞生呢,还是这句话,这里太乌烟瘴气
杠精就是这样,你跟他说讲法制,他跟你讲政治;你跟他讲政治,他跟你讲国情;你跟他讲国情,他跟你讲接轨;这篇文章以及顶楼的主题是在说.net framework 和 c#早就开源了,这是不争的事实,你在这扯啥呢?我觉得把这里搞的乌烟瘴气的正是你这种杠精。
2018-06-28 10:27
0
回复
举报

引用来自“紫竹蜚凝”的评论

感动,即使是有些限制的开源,也是c#的一个大进步!!!

引用来自“Rwing”的评论

这跟 C# 没啥关系.... .net framework 和 C# 很早以前就是开源的

引用来自“sidney9111”的评论

我还真不知道.net framework和c#哪里开源了?linq有开源吗,sharepoint有开源么?要是微软真开源了,也不至于到今天这地步,天下大势,合久必分,分久必合,就好比oschina这里,以为自己开源了,也确实是挺开放的,结果其实根本没有开源的路线,理论,和框架,既没市场,也没人才,就只导致现在这情况。。。。。乌烟瘴气

引用来自“Rwing”的评论

真是不想回复杠精。。但是不回复又怕天下人以为杠精是正确的。首先 .net framework和 C#是开源的,这新闻和源代码铺天盖地,不用我给你提供吧?linq 可能你都不知道是什么,但我也给你解释下,如果你只是 linq 类,那么他是 .net framework 的一部分,所以也开源,如果你指的是 linq to sql,那么他现在进化为 entity framework,也是开源的。至于你说 sharepoint,一个商业软件为什么要开源,就跟office 一样、跟金山 wps 一样,跟谷歌 gmail 一样,跟苹果 keynote 一样,你怎么不要求他们开源?
我也是真不想回复你这种只会看新闻和背概念的,如果微软开源了,为什么还要收购Xamarin,就让开源百花齐放不是很好吗?对于商业运作你是根本不懂,就和你说所技术,哥当年第一批做的monodevelop,还跟着讯飞做framework最小化,哥从来都不管是不是商业,又或者某商业机构是否说他开源,阿里开源了,你有开源代码?腾讯也开源了,你干得过腾讯?小米,锤子也说他开源,和你有半毛线关系?开源是一种信仰没错,但不是用来打嘴炮的,哥当年上codeproject的时候,github还没诞生呢,还是这句话,这里太乌烟瘴气
2018-06-28 09:29
0
回复
举报

引用来自“紫竹蜚凝”的评论

感动,即使是有些限制的开源,也是c#的一个大进步!!!

引用来自“Rwing”的评论

这跟 C# 没啥关系.... .net framework 和 C# 很早以前就是开源的

引用来自“sidney9111”的评论

我还真不知道.net framework和c#哪里开源了?linq有开源吗,sharepoint有开源么?要是微软真开源了,也不至于到今天这地步,天下大势,合久必分,分久必合,就好比oschina这里,以为自己开源了,也确实是挺开放的,结果其实根本没有开源的路线,理论,和框架,既没市场,也没人才,就只导致现在这情况。。。。。乌烟瘴气
真是不想回复杠精。。但是不回复又怕天下人以为杠精是正确的。首先 .net framework和 C#是开源的,这新闻和源代码铺天盖地,不用我给你提供吧?linq 可能你都不知道是什么,但我也给你解释下,如果你只是 linq 类,那么他是 .net framework 的一部分,所以也开源,如果你指的是 linq to sql,那么他现在进化为 entity framework,也是开源的。至于你说 sharepoint,一个商业软件为什么要开源,就跟office 一样、跟金山 wps 一样,跟谷歌 gmail 一样,跟苹果 keynote 一样,你怎么不要求他们开源?
2018-06-26 10:21
0
回复
举报

引用来自“紫竹蜚凝”的评论

感动,即使是有些限制的开源,也是c#的一个大进步!!!

引用来自“Rwing”的评论

这跟 C# 没啥关系.... .net framework 和 C# 很早以前就是开源的
我还真不知道.net framework和c#哪里开源了?linq有开源吗,sharepoint有开源么?要是微软真开源了,也不至于到今天这地步,天下大势,合久必分,分久必合,就好比oschina这里,以为自己开源了,也确实是挺开放的,结果其实根本没有开源的路线,理论,和框架,既没市场,也没人才,就只导致现在这情况。。。。。乌烟瘴气
2018-06-25 18:57
0
回复
举报
我不想做开源,但是你们却要逼我, 你们的手伸的太长了,是谁允许你们在我的这偷偷的拿? 好,那我就给你们看看, 记住, 这不是开源, 这些都是我的, 请你们把手都乖乖的缩回去; 除非这些东西都烂掉再无价值,否则, 永远都是我的. 我也不会接受你们开源那一套方式的贡献; 如果要贡献, 嘘~~,请务必偷偷的告诉我,不要让别人知道.
2018-03-28 16:13
0
回复
举报

引用来自“加百列Gabriel”的评论

还不如unreal
Unreal开发要用Cpp,开发难度高很多,很多基础库要自己写
2018-03-28 12:49
0
回复
举报
还不如unreal
2018-03-28 12:42
0
回复
举报
Neo

引用来自“开源中国首席最强王者”的评论

iis怎么实现高并发和集群的?

引用来自“Aurelito”的评论

Windows Server内置功能有很多,消息队列、容器、分布式集群……微软自己实现了一整套工具,IIS和.NET是其中最核心的部分
微软有自己的集群框架,已经在github上面开源了,地址为https://github.com/Microsoft/service-fabric
2018-03-27 23:58
0
回复
举报

引用来自“紫竹蜚凝”的评论

感动,即使是有些限制的开源,也是c#的一个大进步!!!

引用来自“88250”的评论

换个角度:不想真正开源却还想要得到开源的社区支持 😳
D大万年不变的骚头像。
2018-03-27 22:10
0
回复
举报
更多评论
20 评论
16 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部