我试图实例化场景中已经存在的对象,以便将其放大并“放大”,但当我玩游戏并悬停在对象上时,而不是显示放大卡时,会出现这样的错误:
Card1(Clone)(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.注意:我正在学习一个带有镜像的2D统一卡片游戏教程(2019.2.15f1),我使用的是另一个版本的统一(2020.1.0f1)。
首先,我用这个脚本实例化游戏中的对象,这个脚本从不抛出任何错误。
[Command]
public void CmdDealCards()
{
for (int i = 0; i < 4; i++)
{
GameObject card = Instantiate(playerDeck[Random.Range(0, playerDeck.Count)], new Vector2(0, 0), Quaternion.identity);
NetworkServer.Spawn(card, connectionToClient);
RpcShowCard(card, "Dealt");
}
}当我稍后再次尝试实例化这些对象时,问题就出现了,这里是:
public void OnHoverEnter()
{
zoomCard = Instantiate(gameObject, new Vector2(Input.mousePosition.x, 540), Quaternion.identity);
zoomCard.transform.SetParent(Canvas.transform, true);
zoomCard.layer = LayerMask.NameToLayer("Zoom");
RectTransform rect = zoomCard.GetComponent<RectTransform>();
rect.sizeDelta = new Vector2(240, 354);
}发布于 2022-02-18 02:31:56
我知道这是一个很晚的答案,但我在遇到同样的问题时遇到了这个问题,也许在将来,有人会像我这样做,所以:
您所做的是将错误的预制件附加到检查器中的CardZoom脚本中。附放大卡的巡视员图像
我所做的,想必你也是这样做的,就是在这里附加Card1,这就是它没有复制NetworkIdentity的地方。
https://stackoverflow.com/questions/65679031
复制相似问题