【问题标题】:Instantiate two different players objects on network在网络上实例化两个不同的玩家对象
【发布时间】:2017-03-09 21:50:33
【问题描述】:

我在网络多人游戏中为玩家使用两个不同的对象。统一network Manager 将实例化两种不同类型的游戏对象,但问题是playerprefab 只有一个属性。我如何设置两个不同的对象,即使我试图在运行时更改它但它给了我错误。

未能生成服务器对象, 资产ID=4d293c8e162f3874b982baadd71153d2 netId=1 UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

未能生成服务器对象, 资产 ID=4d293c8e162f3874b982baadd71153d2 网络 ID=7 UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

【问题讨论】:

    标签: c# unity3d multiplayer unity3d-unet


    【解决方案1】:

    在 UNetManager 的文档中:

    如果您想自定义创建玩家游戏对象的方式,您可以覆盖该虚拟函数。此代码显示了默认实现的示例:

    public virtual void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        var player = (GameObject)GameObject.Instantiate(playerPrefab, playerSpawnPos, Quaternion.identity);
        NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
    }
    

    您可以将该代码中的预制件更改为您想要生成的预制件。

    希望这可以帮助您解决选择哪个预制件的问题。

    【讨论】:

    • OnserverAddPlayer 事件未执行,这是否允许实例化不同的播放器对象?
    • 事实上你是如何解决这种方法的,@MuhammadFaizanKhan ?!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2018-10-28
    • 2021-10-26
    相关资源
    最近更新 更多