Unity引擎及编辑器C#源代码发布

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引擎及编辑器C#源代码地址:

    https://github.com/Unity-Technologies/UnityCsReference

  • Unity开源项目参与指南

  • 服务条款及完整协议

    https://unity3d.com/cn/legal/terms-of-service/software

    https://unity3d.com/cn/legal/licenses/Unity_Reference_Only_License


小结


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

原文: https://mp.weixin.qq.com/s/RIMKIZI04rBJiVYz1qSk-A


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s实战为aspnetcore.webapi微服务注入配置信息

1、浅析k8s配置信息Secret以密文的形式存储数据,可以用来保存一些敏感信息,例如:OAuth tokens、私钥、密码、数据库连接、事件总线连接等。ConfigMap以明文的形式存储数据,可以用来保存一些非敏感信息,例如&#xff1a…

10、mysql数据表中数据的查询(2)

介绍一下mysql中查询的重中之重,连接查询 创建student和teacher表,表中数据如下: studentteacher 交叉连接查询 查询结果是连接的几个表中满足条件的相关联的数据的交集 sql SELECT s.id sid, s.name sname , t.id tid ,t.name tname FRO…

微软将人工智能嵌入Windows 10更新

下一轮Windows 10更新为Windows应用程序与人工智能功能的集成提供了新途径,将直接令数以亿计的个人电脑、平板、IoT边缘设备等Windows设备受益。新版Windows ML平台可供开发者直接通过Visual Studio将预先训练好的深度学习模型与自己的应用程序集成,在导…

24、mysql连接线程的show和kill

1、登陆到mysql服务器 Mysql –h ip –u 用户名 –p 密码; 2、检查当前连接的线程 show full processlist 或 show processlist 或 selelct * from information_schema.processlist; Id:线程标识 User:当前用户 Host:sql的来源,i…

ASP.NET Core MVC 2.1 顶级参数验证

本文讨论ASP.NET Core 2.1中与ASP.NET Core MVC / Web API控制器中的模型绑定相关的功能。虽说这是一个功能,但从我的角度来看,它更像是一个错误修复!请注意,我使用的是 NET Core 2.1 Preview 1,正式版发布后&#xff…

.net core2.0下Ioc容器Autofac使用

Autofac基本使用Autofac是一款轻量级的IOC框架,使用率上还是挺高的,官方网站http://autofac.org,源码下载地址https://github.com/autofac/Autofac。下面以狗的列子来介绍autofac,nuget搜索Autofac进行安装public interface IDog{…

微软重组变两大事业部:Windows主管离职

微软CEO纳德拉通过内部邮件宣布,整个公司进行重大重组,划分为两个新的事业部(部门),同时Windows业务主管Terry Myerson(特里梅尔森)将离开微软。Terry Myerson最为人诟病的就是推倒了Windows Mobile而打造全新的Windows Phone,结果…

41、java应用占用cpu过高原因分析

线上服务器cpu占用过高问题排查 1、定位最耗cpu的进程 命令:top 2、定位最耗cpu的线程 命令:Top –Hp PID 例如:Top –Hp 12086 3、打印线程堆栈信息 命令:Printf ‘%x\n’ PID 例如:printf ‘%x\n’ 12118 先将…

Google Optimization Tools介绍

Google Optimization Tools(OR-Tools)是一款专门快速而便携地解决组合优化问题的套件。它包含了:约束编程求解器。简单而统一的接口,用于多种线性规划和混合整数规划求解,包括 CBC、CLP、GLOP、GLPK、Gurobi、CPLEX 和SCIP。图算法 (最短路径…

11、mysql数据表中数据的查询(3)

说一下子查询,子查询的意义就是使用一个查询语句做为另一个查询语句的条件,一般使用exists和in来引导子查询 exists子查询 exists 放在 where 之后使用,可以看成查询数据所满足的一个条件,只是这个条件的值比较特殊(…

使用.Net Core与Google Optimization Tools实现员工排班计划Scheduling

上一篇说完《Google Optimization Tools介绍》,让大家初步了解了Google Optimization Tools是一款约束求解(CP)的高效套件。那么我们用.Net Core与Google Optimization Tools来实现一个有关员工排班计划的场景感受一下。众所周知,…

42、Java服务内存OOM原因分析

1、出现问题的可能原因 对于应用来说内存分配太少 对象创建太多,又没有释放,造成内存泄漏严重,导致内存耗尽 申请太多的系统资源,系统资源耗尽。例如:不断创建线程,不断发起网络连接 2、如何定位问题&a…

Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍

前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows、Mac OSX、Linux) 的应用程序开发框架(Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台。.Net Core也是微软在一开始…

DotNetty 跨平台的网络通信库

久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架。终于微软的Azure团队,使用C#实现的Netty的版本发布。不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口。让我们在使用…

26、临时表的创建和重复数据的处理

UPDATE student b SET b.sname dd WHERE b.id (SELECT a.id FROM student a WHERE a.id 3) Mysql中根据条件(表A中的字段)操作表A中的数据时是不可以的 所以借助临时表来删除/更新重复的数据,原理就是删除每组重复数据中除id值最大的其他…

1、java简介

关于java介绍也没什么好说的,在这里简单介绍一下,说起java,我第一想到的就是它的简单和强大,简单是简单易学,开发速度快;强大是其功能强大,各个领域都可使用,其代码一次编译可以处处…

C# 观察者模式 以及 delegate 和 event

观察者模式这里面综合了几本书的资料.需求有这么个项目: 需求是这样的:一个气象站, 有三个传感器(温度, 湿度, 气压), 有一个WeatherData对象, 它能从气象站获得这三个数据. 还有三种设备, 可以按要求展示气象站的最新数据.WeatherData的结构如下:有3个get方法, 分别获取最新的…

2、JAVA开发环境的搭建

上次说到java应用之所以做到跨平台,是因为其依赖于java虚拟机,java想要运行需要依赖于特定的运行环境,称为JRE,如果想要开发java应用,则需要用到开发工具包,也就是JDK,所以这里就要说一下这几者…

Serilog Tutorial

在过去的几年中,结构化日志已经大受欢迎。而Serilog是 .NET 中最著名的结构化日志类库 ,我们提供了这份的精简指南来帮助你快速了解并运用它。0. 内容设定目标认识Serilog事件和级别触发和收集结构化数据为过滤和关联添加事件标记大海捞针 [Finding needles in the …

使用DDD、事件风暴和Actor来设计反应式系统

领域驱动设计(domain-driven design,DDD)通常在微服务领域用于查找边界(限界上下文)。同样来自DDD的聚合(aggregate)对于定义持久化和一致性的范围来讲也是很重要的。 但是,并不是领…