Unity 运行时编译 C# 脚本的插件,基于微软 Roslyn 编译器,官方支持 PC、Mac 与 Linux,安卓需手动搬 Runtime 目录且无官方支持。
Roslyn C#是一个强大的工具,它使用了Microsoft的Roslyn编译器,允许在运行时加载程序集和C#脚本,使得向项目中添加模组支持或者进行游戏内编程变得非常容易。此外,Roslyn C#还包含了代码安全验证功能,允许你指定许多安全限制,以确保加载的代码符合规范,包括禁止使用非法的命名空间和类型。这使得从未知来源加载第三方代码变得更加安全。
其中还包含了一个基于编程的小型游戏,游戏目标是通过编写代码来帮助老鼠从迷宫中出去。

功能特点:
- 运行时编译和运行C#脚本
- 使用Roslyn C#编译器,利用最新的C#语言特性
- 快速执行。一旦编译,外部脚本将与游戏脚本一样快地运行
- 可以轻松添加模组支持
- 代码安全验证意味着可以识别并丢弃不安全的代码
- 代码安全性在失败时生成详细报告,包含使用了非法类型的信息以及外部代码中每个使用的位置
- 提供简单易用的API,支持程序集、类型和实例反射
- 支持使用脚本代理进行非具体通信
- 使用正确的方法(AddComponent、CreateInstance、new)进行自动类型构建
- 为快速反射提供了缓存的成员表
- 所有脚本和示例都按名称空间组织,以避免类型名称冲突
- 包含完全注释的C#源代码
- 提供了全面的API文档,以快速、简单地查阅使用
平台支持:支持PC、Mac和Linux平台。
Roslyn C#也可能在其他平台上工作良好,但我们只会支持官方支持的平台。
安卓平台:安卓平台并没有官方支持,但是很多用户通过按照以下步骤,成功让该资产在安卓上运行:
在Project中,转到Assets/Plugins/RoslynCSharp/Runtime,将Runtime文件夹拷贝到Assets文件夹下。
确保您的项目中已经添加了所有依赖项。您可以在“Assets/Plugins/RoslynCSharp/Documentation/html/RoslynCSharp.html”中找到有关依赖项的信息。
将您的脚本文件放在Assets文件夹下的Scripts子文件夹中,确保它们都被编译。然后,您就可以将它们放到您的应用程序中了。
常见问题
官方支持哪些平台?
PC、Mac 和 Linux 三个平台,其他平台即使能跑起来也不在官方支持范围内。
安卓上能跑吗?
官方未支持,但原文给了变通做法:把 Assets/Plugins/RoslynCSharp/Runtime 拷到 Assets 下并补齐依赖项。
加载外部代码怎么保证安全?
可以设置安全限制,禁止使用指定的命名空间和类型;校验不通过会生成报告,指出非法类型在外部代码里的使用位置。
运行时编译的脚本会不会很慢?
原文称脚本编译完成后执行速度与游戏自身脚本一致,运行时编译不影响运行性能。
能用来做什么?
给项目加模组支持,或者做游戏内编程;包内还带一个用写代码帮老鼠走出迷宫的小游戏作示例。
导入的第三方代码有跟踪手段吗?
有,代码安全校验失败时会列出每个非法使用的具体位置,便于定位是哪段外部代码出的问题。




评论(0)