概要

Unity 运行时编译 C# 脚本的插件,基于微软 Roslyn 编译器,官方支持 PC、Mac 与 Linux,安卓需手动搬 Runtime 目录且无官方支持。

1676553901 F38A468E497336F

Roslyn C#是一个强大的工具,它使用了Microsoft的Roslyn编译器,允许在运行时加载程序集和C#脚本,使得向项目中添加模组支持或者进行游戏内编程变得非常容易。此外,Roslyn C#还包含了代码安全验证功能,允许你指定许多安全限制,以确保加载的代码符合规范,包括禁止使用非法的命名空间和类型。这使得从未知来源加载第三方代码变得更加安全。

其中还包含了一个基于编程的小型游戏,游戏目标是通过编写代码来帮助老鼠从迷宫中出去。

1676553897 1Da057A5F65F08A

功能特点:

  • 运行时编译和运行C#脚本
  • 使用Roslyn C#编译器,利用最新的C#语言特性
  • 快速执行。一旦编译,外部脚本将与游戏脚本一样快地运行
  • 可以轻松添加模组支持
  • 代码安全验证意味着可以识别并丢弃不安全的代码
  • 代码安全性在失败时生成详细报告,包含使用了非法类型的信息以及外部代码中每个使用的位置
  • 提供简单易用的API,支持程序集、类型和实例反射
  • 支持使用脚本代理进行非具体通信
  • 使用正确的方法(AddComponent、CreateInstance、new)进行自动类型构建
  • 为快速反射提供了缓存的成员表
  • 所有脚本和示例都按名称空间组织,以避免类型名称冲突
  • 包含完全注释的C#源代码
  • 提供了全面的API文档,以快速、简单地查阅使用

1676553898 1E7C80A3E94559B

平台支持:支持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 下并补齐依赖项。

加载外部代码怎么保证安全?

可以设置安全限制,禁止使用指定的命名空间和类型;校验不通过会生成报告,指出非法类型在外部代码里的使用位置。

运行时编译的脚本会不会很慢?

原文称脚本编译完成后执行速度与游戏自身脚本一致,运行时编译不影响运行性能。

能用来做什么?

给项目加模组支持,或者做游戏内编程;包内还带一个用写代码帮老鼠走出迷宫的小游戏作示例。

导入的第三方代码有跟踪手段吗?

有,代码安全校验失败时会列出每个非法使用的具体位置,便于定位是哪段外部代码出的问题。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。