SuperAPI AI 工具集

unity-vrc-udon-sharp

编程与开发

查看项目

更新于 10-14 20:49

技能介绍

用途

本技能面向 VRChat SDK 3.10.5(当前活跃且已验证的目标版本),用于编写、审查、调试或迁移 UdonSharp C# 代码。UdonSharp 表面上像普通 Unity C# 脚本,但存在许多隐藏限制:许多标准 C# 特性(List<T>、async/await、try/catch、LINQ、泛型)在 Udon 运行时中会静默失败或拒绝编译。编辑器求值的字段初始化器属于独立上下文,可使用部分普通 C# 特性生成 Udon 能持有的最终值。网络部分更危险:在没有所有权的情况下修改同步变量不会报错,只是什么都不做;忘记 RequestSerialization 意味着状态更改永远不会离开本机。标准单人本地测试无法发现这些网络缺陷,因为只有一个玩家。

主要能力

技能围绕以下核心原则组织:约束优先(假设标准 C# 特性被阻止,使用 API 前先查约束文档);变更前先获取所有权(SetOwner → 修改 → RequestSerialization);迟到加入者正确性(状态必须对事件后加入的玩家正确);同步最小化(每个同步变量都消耗带宽,只同步真相来源);事件驱动而非轮询(使用 OnDeserialization、[FieldChangeCallback]、SendCustomEvent)。

技能包含一份“NEVER 清单”,列出 20 项会导致编译失败或静默数据错误的做法,例如:在 Udon 运行时使用泛型集合、async/await、try/catch、LINQ/lambda、Button.onClick.AddListener();无所有权修改 [UdonSynced] 字段;忘记 RequestSerialization;在字段初始化器中访问 Networking.LocalPlayer;用静态字段保存每实例状态;每帧调用 RequestSerialization;在 Update 中调用 Debug.Log;对 GameObject/Transform/组件引用使用 [UdonSynced];用 VRCUrl.Empty 初始化需要独立初始值的字段等。

技能还提供同步模式快速决策(每帧变化用 Continuous,用户操作变化用 Manual + RequestSerialization,无需同步用 NoVariableSync,需要带参数的一次性可靠调用用 [NetworkCallable],临时效果用 SendCustomNetworkEvent)和同步调试快速决策(远程玩家看不到状态变化、RequestSerialization 后仍不同步、迟到加入者看不到当前状态、OnOwnershipTransferred 未触发等场景的排查路径)。

使用方式

技能建议在生成任何代码前先阅读规则。对于复杂同步系统、所有权敏感重构或压缩/交接后恢复的工作,可加载 references/context-preservation.md 获取轻量任务上下文笔记。对于 VRChat SDK 构建面板验证警报、红/黄/白警告或涉及世界场景设置的 Auto Fix 副作用,应使用 unity-vrc-world-sdk-3 并阅读 references/build-validation.md。技能提供参考加载指南,按任务(编写网络/同步代码、构建 UI/菜单、实现持久化、从网络下载字符串/图像、使用 VRCTween 等)标明必读、可选和不应加载的文档,避免过度加载浪费 token 或加载不足导致关键错误。

适用场景

适用于 VRChat 世界中 UdonSharp 脚本的编写、审查、调试和迁移,尤其是涉及网络同步、所有权转移、迟到加入者状态、持久化、UI 菜单、网络下载、VRCTween 等场景。

限制

技能明确以 SDK 3.10.5 为活跃且已验证目标;低于 3.8.1 的 SDK 不支持 [NetworkCallable] 和参数化网络事件 API,低于 3.10.0 不支持 PhysBones/Contacts API,低于 3.7.4 不支持 PlayerData 持久化 API。关于收费、价格、平台等信息,资料中暂未提供。