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