"cannot convert from gameObject to Transform" 我认为这是一个简单的修复程序,但我仍在尝试精确地固定修复程序,有什么想法吗?



我正在为我和我的朋友正在开发的多人游戏编写c#代码,我遇到了以下错误:"Assets\Scripts\Multiplayer\Launcher.cs(99,43(:错误CS1503:参数2:无法从"UnityEngine.GameObject"转换为"UnityEngine.Transform">

我相信它在抱怨这些本应控制多人游戏大厅一部分的代码行:

public override void OnRoomListUpdate(List<RoomInfo> roomList)
{
foreach(Transform trans in roomListContent)
{
Destroy(trans.gameObject);
}
for(int i = 0; i < roomList.Count; i++)
{
Instantiate(RoomListItemPrefab, roomListContent).GetComponent<RoomListItem>().SetUp(roomList[i]);
}
}
public override void OnPlayerEnteredRoom(Player newPlayer)
{
Instantiate(PlayerListItemPrefab, playerListContent).GetComponent<PlayerListItem>().SetUp(newPlayer);
}

}

这样的错误消息只意味着您传递了错误类型的参数。在这种情况下,它很可能向Instantiate()抱怨第二个arg,它应该是Transform,但却是GameObject。很难说,因为你甚至没有发布完整的源代码。playerListContent是什么类型的?

正如gregee所说,很难确切地知道这里的问题,但很可能playerListContent不是gameObject类型。当您给定实例化两个参数时,它们必须适合特定的类型,这些类型将根据您给定的参数总数而变化。在这种情况下:

Instantiate(Object original, Transform parent)

这意味着playerListContent也应该是实例化对象的父对象的转换。

相关内容

最新更新