避免使用 internal 可见性 如果你使用 internal 关键字,你的方法或属性可能会随机无法导出,而且不会有任何错误提示。 截止到 VRCSDK 版本 3.8.2 ,这一问题一直没有得到修复。在 VRCSDK 解决这个错误前,你至少不应该在 UdonSharp 脚本 中使用 internal 修饰 类属性访问器 或 类方法 。由于 UdonSharp 从未考虑过该访问修饰符,取决于 U# 程序集被编译的顺序,你的 UdonSharp 脚本对应的类方法将 随机的被导出或不被导出 。 这听起来很奇怪,对吗? 这篇文章将带领你深入探索 UdonSharp 编译器的实现,并解释该问题的具体原因。 但在阅读下文之前,为了理解一些复杂概念,你可能需要先阅读一下: UdonSharp 的前世今生 Workaround 我知道突然跳一个 Workaround 出来很突兀,但是我们最近才发现有一个 Workaround 而且懒得直接写完这一节。 #if COMPILER_UDONSHARP public #else internal protected #endif 你可以使用 COMPILER_UDONSHARP 这个符号。在使用 U# 编译器编译代码时暂时把 class 变成 public ,在使用其他 C# 编译器时正常编译 internal 。 但是我需要提醒一下:如果出现了两个不同命名空间有重名并且同时 using 有这两个命名空间,这可能会导致在 U# 编译器编译时出现冲突。