在 Unity 的 Mirror 网络框架中,[Command]
和 [ClientRpc]
是实现 服务器与客户端通信 的核心机制。它们分别用于不同的方向控制,是构建多人游戏逻辑的基础。以下是它们的详细说明和对比:
一、[Command]
(客户端 → 服务器)
1. 定义与作用
- 用途:客户端向服务器发送请求,触发服务器执行特定逻辑。
- 执行环境:代码在服务器端运行。
- 权限要求:必须由客户端拥有权限的对象调用(例如玩家的角色)。
2. 代码示例
public class Player : NetworkBehaviour {
[Command]
void CmdShoot(Vector3 position, Quaternion rotation) {
// 在服务器生成子弹
GameObject bullet = Instantiate(bulletPrefab, position, rotation);
NetworkServer.Spawn(bullet); // 同步到所有客户端
}
void Update() {
if (!isLocalPlayer) return;
if (Input.GetMouseButtonDown(0)) {
CmdShoot(transform.position