mcpField
U
unity-netcode-design

unity-netcode-design

github.com/besty0728开发1.9k73 次安装今天更新
代码仓库

关于 unity-netcode-design

面向使用 Netcode for GameObjects 2.x 开发或审查多人联机代码的文档技能,提供带源码依据的生命周期、RPC、网络变量、对象生成、场景及传输配置规则。

主要功能

  1. 01NetworkBehaviour 生命周期指导
  2. 02RPC 与所有权规则
  3. 03NetworkVariable 序列化限制
  4. 04NetworkObject 生成与场景规则
  5. 05UnityTransport 配置指导

适用场景

  1. 01审查多人游戏代码
  2. 02设计服务器权威或分布式权威
  3. 03排查 RPC 与网络变量行为
  4. 04配置网络对象及传输流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/besty0728/unity-skills --skill unity-netcode-design

安装后在 Claude Code 中输入/unity-netcode-design确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LIFECYCLE.md
OWNERSHIP.md
PITFALLS.md
RPC.md
SCENE.md
SPAWNING.md
TRANSPORT.md
VARIABLES.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 进行分支判断的代码

关键规则摘要(即使跳过子文档,也要记住)

#规则源代码位置
1Spawn() / Despawn() 只能由 Server/Host 调用;客户端调用会失败。Runtime/Core/NetworkObject.cs:1884, 1921
2OnNetworkSpawn() 在 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
5PlayerPrefab 必须存在于 NetworkPrefabsList 或 NetworkConfig.Prefabs 中,否则 2.x 运行时会拒绝它。Runtime/Configuration/NetworkConfig.cs:40 + NetworkPrefabsList.cs:14
6禁止嵌套 NetworkObject(一个 NetworkObject 位于另一个 NetworkObject 预制件内)。请在运行时通过 TrySetParent 重新设定父级。Runtime/Core/NetworkObject.cs:2135-2215
7NetworkVariable<T> 要求 T 为 unmanaged 或实现 INetworkSerializable。string、List<>、class 均不受支持。Runtime/NetworkVariable/NetworkVariable.cs:12 + ILPP
8NetworkList<T> 要求 T: unmanaged, IEquatable<T>。它不是 NetworkVariable<List<T>>。Runtime/NetworkVariable/Collections/NetworkList.cs:14
9NetworkSceneManager.LoadScene/UnloadScene 只能由 Server 调用。Runtime/SceneManagement/NetworkSceneManager.cs:1496, 1252
10UnityTransport.SetRelayServerData 和 SetConnectionData 互斥;只能二选一。Runtime/Transports/UTP/UnityTransport.cs:776-897

子文档索引

子文档阅读时机
LIFECYCLE.md生命周期、回调顺序、Awake/OnNetworkSpawn/Start 的差异
OWNERSHIP.mdIsOwner/IsServer/IsHost 权限矩阵、ChangeOwnership、分布式权威
RPC.md选择 RPC 特性、SendTo 语义、RpcInvokePermission、已弃用的路径
VARIABLES.mdNetworkVariable/NetworkList 初始化和序列化限制
SPAWNING.md预制件注册 → Spawn → Despawn、GlobalObjectIdHash、SpawnAsPlayerObject
SCENE.mdNetworkSceneManager、EnableSceneManagement、场景内对象同步
TRANSPORT.mdUnityTransport 直连 / Relay / DebugSimulator 配置
PITFALLS.md30 个具体的臆造陷阱

路由到其他模块

  • 生成 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