Unity UNet客户端权限

时间:2015-07-03 14:35:51

标签: unity3d unity-networking

我正在进行多人游戏,我试图在客户端上实例化一个新对象。该对象应由该玩家单独控制。

我通过简单地在客户端上实例化它来尝试它,然后产生它:

public class Player : NetworkBehaviour
{
    [SerializeField]
    private Card _testCard;

    void Update()
    {
        if (!isLocalPlayer) return;

        if (Input.GetKeyDown(KeyCode.Space))
        {
            RaycastHit hit;
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
            {
                var card = Instantiate(_testCard);
                card.transform.position = hit.point;
                card.Name = "Test";
                NetworkServer.Spawn(card.gameObject);
                //or call this from a command, shown below
            }
        }
    }

    /*[Command]
    void CmdPlayTestCard(string name, Vector3 position)
    {
        var card = Instantiate(_testCard);
        card.transform.position = position;
        card.Name = name;
        NetworkServer.Spawn(card.gameObject);
    }*/
}

这会在客户端产生对象,它可以由它控制,但不会在服务器上产生。

我也在Command中做了同样的事情,然后它被实例化到处,但客户端无法控制它。然而,服务器可以控制它。

这样做的正确方法是什么?创建一个应由其中一个玩家而不是服务器控制的对象?

我尝试使用Google搜索,但无法找到任何内容。

谢谢!

2 个答案:

答案 0 :(得分:1)

我发现这是在Unity 5.2中出现的,当前的beta发行说明列出了这个功能:"网络:增加了对非玩家对象的客户端权限的支持。"

所以每个人都将在9月份出现。

答案 1 :(得分:0)

Oddler,我不知道答案,但irc.freenode.net上有一个社区#unity3d-unet可能!

此外,这里收集了一些资源和代码片段: https://goo.gl/UmBBpM