Unity3d 如何在Unity中使用镜像生成不同的预置?

Unity3d 如何在Unity中使用镜像生成不同的预置?,unity3d,multiplayer,mirror,Unity3d,Multiplayer,Mirror,我试图为我的学校论文创建一个局域网游戏,但我似乎不知道如何为每个使用Unity中的镜像连接到服务器的玩家生成不同的预置。我可以创建一个房间,但每次玩家加入时,他将拥有与服务器相同的预制,我希望它有所不同 这是我的网络管理器的设置。我附加了一个名为Char1的脚本,其中包含来自 我可以创建一个房间,并与Parrelsync同步所有内容,但无法为每个要连接的玩家设置不同的预设。如果您需要任何信息来帮助我,请告诉我,我会尽快回答。因为您的问题没有给出答案: 在自定义NetworkingManage

我试图为我的学校论文创建一个局域网游戏,但我似乎不知道如何为每个使用Unity中的镜像连接到服务器的玩家生成不同的预置。我可以创建一个房间,但每次玩家加入时,他将拥有与服务器相同的预制,我希望它有所不同

这是我的网络管理器的设置。我附加了一个名为Char1的脚本,其中包含来自


我可以创建一个房间,并与Parrelsync同步所有内容,但无法为每个要连接的玩家设置不同的预设。如果您需要任何信息来帮助我,请告诉我,我会尽快回答。

因为您的问题没有给出答案:

在自定义NetworkingManager类的顶部(顺便说一句,它应该继承自NetworkManager),您应该创建一个公共GameObject变量。当您的代码编译时,它将以您命名的名称显示在编辑器中。之后,您可以将其设置为您制作的预制对象

之后,只需在代码中设置要实例化的游戏对象即可

public class MyNetworkingManager : NetworkManager
{

public GameObject PlayerPrefab2;


public override void OnStartServer()
{
    base.OnStartServer();
    NetworkServer.RegisterHandler<CharacterCreatorMessage>(OnCreateCharacter);
}

public override void OnClientConnect(NetworkConnection conn)
{
    base.OnClientConnect(conn);

    //send the message here
    //the message should be defined above this class in a NetworkMessage
    CharacterCreatorMessage characterMessage = new CharacterCreatorMessage
    {
        //Character info here
    };

    conn.Send(characterMessage);

}

void OnCreateCharacter(NetworkConnection conn, CharacterCreatorMessage message)
{

    if (message.character.Equals("player2"))
    {
        GameObject gameobject = Instantiate(PlayerPrefab2);
        Player2 player = gameobject.GetComponent<Player2>();
        NetworkServer.AddPlayerForConnection(conn, gameobject);
    } else if (message.character.Equals("player1"))
    {
        GameObject gameobject = Instantiate(playerPrefab);
        Player player = gameobject.GetComponent<Player>();
        NetworkServer.AddPlayerForConnection(conn, gameobject);
    }



}


}
公共类MyNetworkingManager:NetworkManager
{
公共游戏对象播放器;
公共覆盖无效OnStartServer()
{
base.OnStartServer();
NetworkServer.RegisterHandler(OnCreateCharacter);
}
公用覆盖无效OnClient连接(网络连接连接)
{
基本客户端连接(conn);
//在这里发送消息
//应在NetworkMessage中的此类上方定义消息
CharacterCreatorMessage characterMessage=新字符CreatorMessage
{
//字符信息在这里
};
conn.Send(字符信息);
}
void OnCreateCharacter(网络连接连接、CharacterCreatorMessage消息)
{
if(message.character.Equals(“player2”))
{
GameObject GameObject=实例化(PlayerPrefab2);
Player2 player=gameobject.GetComponent();
NetworkServer.AddPlayerForConnection(连接,游戏对象);
}else if(message.character.Equals(“player1”))
{
GameObject GameObject=实例化(playerPrefab);
Player=gameobject.GetComponent();
NetworkServer.AddPlayerForConnection(连接,游戏对象);
}
}
}

是这里基类概念的一个很好的参考。

@Fattie您能详细说明一下吗?UNet已经过时,DOTS包仍在预览中。