Unity Mirror局域网联机卡牌游戏:克隆非预制体场景对象并解决"Bt_Card(Clone) has already spawned."错误
"使用Unity Mirror开发局域网联机的卡牌游戏,我需要创造一个场景中存在的非预制体并带有NetworkIdentity组件的对象的克隆,报错Bt_Card(Clone) has already spawned. Don't call Instantiate for NetworkIdentities that were in the scene since the beginning (aka scene objects). Otherwise the client won't know which object to use for a SpawnSceneObject message.我不想创造预制体,请告诉我如何解决"\n\n这个错误是因为你尝试在场景中创建已经存在的带有NetworkIdentity组件的对象的克隆。为了解决这个问题,你可以使用NetworkServer.Spawn()方法来将现有的场景对象标记为网络对象。\n\n下面是一个示例代码,演示如何在局域网联机卡牌游戏中使用Unity Mirror创建场景中的非预制体的克隆:\n\ncsharp\nusing Mirror; \nusing UnityEngine; \n\npublic class CardSpawner : NetworkBehaviour \n{\n public GameObject cardPrefab; // 需要克隆的卡牌预制体 \n\n [Command] \n public void CmdSpawnCard() \n {\n // 创建卡牌克隆 \n GameObject cardClone = Instantiate(cardPrefab); \n\n // 将克隆对象标记为网络对象 \n NetworkServer.Spawn(cardClone); \n } \n}\n\n\n在这个示例中,CardSpawner是一个继承自NetworkBehaviour的脚本。它包含了一个Command方法CmdSpawnCard(),用于在服务器上生成卡牌的克隆。当客户端调用这个方法时,服务器会创建克隆对象,并使用NetworkServer.Spawn()将其标记为网络对象。\n\n确保在场景中为CardSpawner对象添加NetworkIdentity组件,并将其设置为局域网联机的服务器。\n\n请注意,这个示例只适用于在局域网内的联机游戏,需要在服务器和客户端之间进行网络同步。如果你需要在互联网上进行联机游戏,你需要使用更复杂的网络架构来实现对象的创建和同步。
原文地址: https://www.cveoy.top/t/topic/p3dJ 著作权归作者所有。请勿转载和采集!