关于 unity-netcode-design
面向使用 Netcode for GameObjects 2.x 开发或审查多人联机代码的文档技能,提供带源码依据的生命周期、RPC、网络变量、对象生成、场景及传输配置规则。
主要功能
- 01NetworkBehaviour 生命周期指导
- 02RPC 与所有权规则
- 03NetworkVariable 序列化限制
- 04NetworkObject 生成与场景规则
- 05UnityTransport 配置指导
适用场景
- 01审查多人游戏代码
- 02设计服务器权威或分布式权威
- 03排查 RPC 与网络变量行为
- 04配置网络对象及传输流程
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-netcode-design安装后在 Claude Code 中输入/unity-netcode-design确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LIFECYCLE.mdOWNERSHIP.mdPITFALLS.mdRPC.mdSCENE.mdSPAWNING.mdTRANSPORT.mdVARIABLES.md详细介绍
**调用此模块中的任何技能之前:**如果你准备根据技能名称或描述猜测参数后调用技能,请停止——先阅读此文件(或通过
GET /skills/recommend?includeSchema=true获取其架构)。如果你已经从 recommend/schema 获取了参数定义,则可直接进行 dryRun。
触发条件
- 编写或审查多人联机代码
- 设计服务器/分布式权威
- 连接 RPC 或 NetworkVariables
- 调试 netcode
- 编写或审查多人联机代码、设计服务器/分布式权威、连接 RPC 或网络变量、排查 netcode 问题
Netcode for GameObjects - 设计规则
参考模块。每条规则均源自 com.unity.netcode.gameobjects 2.x 的代码,并附有具体文件和行号,以便核查推理依据。
模式:仅提供文档——没有需要把关的 REST 技能;任何运行模式(Approval / Auto / Bypass)下均可自由加载。
何时加载此模块
在编写或审查以下任意内容之前加载:
- NetworkBehaviour 脚本(OnNetworkSpawn / OnNetworkDespawn / RPC / NetworkVariables)
- NetworkManager 的启动 / 关闭 / 场景切换
- NetworkObject Spawn / Despawn / ChangeOwnership / TrySetParent
- UnityTransport 配置(直连 / Relay)
- 任何根据 IsHost / IsServer / IsClient / IsOwner 进行分支判断的代码
关键规则摘要(即使跳过子文档,也要记住)
| # | 规则 | 源代码位置 |
|---|---|---|
| 1 | Spawn() / Despawn() 只能由 Server/Host 调用;客户端调用会失败。 | Runtime/Core/NetworkObject.cs:1884, 1921 |
| 2 | OnNetworkSpawn() 在 Unity Start() 之前、在 Awake/OnEnable 之后运行。 | Runtime/Core/NetworkBehaviour.cs:704 + InvokeBehaviourNetworkSpawn 调用方 |
| 3 | 旧版 [ServerRpc] 方法名必须以 ServerRpc 结尾;[ClientRpc] 必须以 ClientRpc 结尾(ILPP 在编译时强制执行)。 | Editor/CodeGen/ ILPP 验证器 |
| 4 | 新版 [Rpc(SendTo.X)] 没有命名限制;SendTo 有 11 个取值。 | Runtime/Messaging/RpcTargets/RpcTarget.cs:9-80 |
| 5 | PlayerPrefab 必须存在于 NetworkPrefabsList 或 NetworkConfig.Prefabs 中,否则 2.x 运行时会拒绝它。 | Runtime/Configuration/NetworkConfig.cs:40 + NetworkPrefabsList.cs:14 |
| 6 | 禁止嵌套 NetworkObject(一个 NetworkObject 位于另一个 NetworkObject 预制件内)。请在运行时通过 TrySetParent 重新设定父级。 | Runtime/Core/NetworkObject.cs:2135-2215 |
| 7 | NetworkVariable<T> 要求 T 为 unmanaged 或实现 INetworkSerializable。string、List<>、class 均不受支持。 | Runtime/NetworkVariable/NetworkVariable.cs:12 + ILPP |
| 8 | NetworkList<T> 要求 T: unmanaged, IEquatable<T>。它不是 NetworkVariable<List<T>>。 | Runtime/NetworkVariable/Collections/NetworkList.cs:14 |
| 9 | NetworkSceneManager.LoadScene/UnloadScene 只能由 Server 调用。 | Runtime/SceneManagement/NetworkSceneManager.cs:1496, 1252 |
| 10 | UnityTransport.SetRelayServerData 和 SetConnectionData 互斥;只能二选一。 | Runtime/Transports/UTP/UnityTransport.cs:776-897 |
子文档索引
| 子文档 | 阅读时机 |
|---|---|
| LIFECYCLE.md | 生命周期、回调顺序、Awake/OnNetworkSpawn/Start 的差异 |
| OWNERSHIP.md | IsOwner/IsServer/IsHost 权限矩阵、ChangeOwnership、分布式权威 |
| RPC.md | 选择 RPC 特性、SendTo 语义、RpcInvokePermission、已弃用的路径 |
| VARIABLES.md | NetworkVariable/NetworkList 初始化和序列化限制 |
| SPAWNING.md | 预制件注册 → Spawn → Despawn、GlobalObjectIdHash、SpawnAsPlayerObject |
| SCENE.md | NetworkSceneManager、EnableSceneManagement、场景内对象同步 |
| TRANSPORT.md | UnityTransport 直连 / Relay / DebugSimulator 配置 |
| PITFALLS.md | 30 个具体的臆造陷阱 |
路由到其他模块
- 生成 NetworkBehaviour 脚本 → 使用功能性
netcode模块中的netcode_add_network_behaviour_script - 在场景中批量附加 NetworkObject/NetworkTransform → 使用
netcode模块的 Components 技能 - 架构层面的决策(服务器权威 vs 分布式权威)→ 还需加载 architecture
版本范围
本文档面向 com.unity.netcode.gameobjects 2.x(已针对 2.11.0、Unity 6000.0+ 验证)。某些 API(SendTo.Authority、RpcInvokePermission、通用 [Rpc] 特性)在 1.x 中不存在。
评论
支持 Markdown