迁移
UdonSharp 0.x(.unitypackage 版本)已弃用,不再受支持。
新版本的 UdonSharp 包含在 VRChat Worlds SDK 中,可以通过 Creator Companion 轻松安装。我们建议您使用 Creator Companion 迁移项目。如果您想手动迁移,请阅读手动迁移。
UdonSharp 1.0 的新功能
- UdonSharp 程序中更多 C# 特性:
static方法- 泛型
static方法 params、out、ref和默认参数- 扩展方法
- 继承、虚方法和抽象类
- 分部类
- 枚举
- 多编辑:在 Unity 检查器中同时编辑多个 UdonSharp 脚本
- 预制体变体、实例和嵌套现在完全支持
- 编辑器脚本已彻底改革和简化
- 编译器修复和优化
- 修复了各种错误、边缘情况和其他问题
已知问题
当你从非常旧的 UdonSharp 版本迁移项目时,可能会遇到一些已知问题。以下是解决它们的方法。
UdonSharp 遇到问题了吗?尝试通过"Assets" > "Reimport All"重新导入所有资源。
在许多情况下,这可以修复与 UdonSharp 相关的导入问题,特别是在从旧版本迁移或升级项目时。
嵌套预制体
问题:UdonSharp 一直警告不要使用嵌套预制体。从旧版本迁移时,嵌套预制体可能会损坏。
症状:Unity 控制台中出现类似 Cannot upgrade scene behaviour 'SomethingOrOther' since its prefab must be upgraded 的错误。
修复方法:首先在 0.x UdonSharp 项目中解包预制体。你也可以打开"Udon Sharp"菜单项并选择"Force Upgrade"。
不属于 U# 程序集
问题:拥有自己的程序集定义(Assembly Definition)的库也需要一个 U# 程序集定义。
症状:Unity 控制台中出现类似 [UdonSharp] Script 'Assets/MyScript.cs' does not belong to a U# assembly, have you made a U# assembly definition for the assembly the script is a part of? 的错误。
修复方法:
- 使用 Project 窗口在相关脚本的相同或父目录中找到以
.asmdef结尾的文件。 - 右键单击包含此程序集定义的文件夹,选择
Create > U# Assembly Definition。 - 选择这个新的 U# asmdef,并使用检查器将其"Source Assembly"设置为另一个程序集定义文件。
- 完成后可能需要重新启动 Unity。
Newtonsoft.Json.Dll
问题:某些包包含自己的此 JSON 库副本,而 VRCSDK 本身也会引入它。这会导致库的两个副本冲突。
症状:Unity 控制台中出现提及上述库的错误。可能不在句子开头,但类似 System.TypeInitializationException: the type initializer for blah blah blah...Assets/SketchfabForUnity/Dependencies/Libraries/Newtonsoft.Json.dll。
修复方法:从 Assets 文件夹中删除所有 Newtonsoft.Json.dll 副本。VRCSDK 将通过 Package Manager 为任何需要它的包提供该库。
其他重大变更
- 你的 U# 行为名称必须与 .cs 文件名称匹配。
- 重复的程序资产不能引用相同的
.cs文件。 - 程序资产必须指向一个脚本,不能为空。
编辑器脚本变化
- 编辑器脚本现在不同了:数据由 UdonSharpBehaviour 的 C# 代理拥有,对应的 UdonBehaviour 在运行时之前为空。
- 已弃用的 station 和 player join 事件重载不能再使用。
手动迁移
按照以下步骤升级使用低于 1.0 版本的 UdonSharp 且不使用 Creator Companion 的项目:
- 备份你的项目。
- 从项目的"Assets"文件夹中删除 VRCSDK 文件夹、Udon 文件夹、UdonSharp 文件夹和 Gizmos/UdonSharp 文件夹。
- 下载并安装 World SDK 的 Unity Package 版本。
- 下载并安装 UdonSharp SDK 的 Unity Package 版本。