Unity Mirror局域网联机卡牌游戏:解决Bt_Card(Clone) has already spawned错误
这个错误是因为你在场景中已经存在一个带有NetworkIdentity组件的对象,然后尝试再次使用Instantiate来创建这个对象的克隆。在Unity Mirror中,对于一开始就存在于场景中的对象,在网络同步时是不需要使用Instantiate来创建的。\n\n解决这个问题的方法是,在场景中的对象上移除NetworkIdentity组件,并且将其设置为预制体。然后在需要创建克隆的代码中,使用Instantiate来创建预制体的克隆,并且为克隆体添加NetworkIdentity组件。\n\n以下是一个示例代码:\n\ncsharp\npublic GameObject cardPrefab; // 预制体\n\nvoid SpawnCard()\n{\n GameObject cardClone = Instantiate(cardPrefab);\n NetworkIdentity netIdentity = cardClone.GetComponent<NetworkIdentity>();\n if (netIdentity != null)\n {\n netIdentity.AssignClientAuthority(NetworkServer.localConnection); // 分配客户端权限\n NetworkServer.Spawn(cardClone); // 在网络上生成对象\n netIdentity.RemoveClientAuthority(NetworkServer.localConnection); // 移除客户端权限\n }\n}\n\n\n这样,你就可以在局域网联机的卡牌游戏中正确地克隆带有NetworkIdentity组件的对象了。
原文地址: https://www.cveoy.top/t/topic/p3dt 著作权归作者所有。请勿转载和采集!