【问题标题】:Unity UNet client authorityunity UNet 客户端权限
【发布时间】:2015-07-03 14:35:50
【问题描述】:

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

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

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 中做了同样的事情,然后它在任何地方都被实例化了,但客户端无法控制它。但是服务器可以控制它。

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

我尝试用谷歌搜索,但找不到任何东西。

谢谢!

【问题讨论】:

    标签: unity3d unity-networking


    【解决方案1】:

    我发现这是在 Unity 5.2 中推出的,当前的 beta 版本说明将此列为一项功能:“网络:增加了对非玩家对象的客户端权限的支持。”

    所以这将在 9 月为每个人提供。

    【讨论】:

      【解决方案2】:

      奇怪,我不知道答案,但在 irc.freenode.net 的频道#unity3d-unet 中可能有一个社区!

      此外,这里正在收集一些资源和代码sn-ps: https://goo.gl/UmBBpM

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-24
        • 2018-09-17
        • 1970-01-01
        • 1970-01-01
        • 2019-05-17
        • 2021-12-31
        • 2017-09-23
        • 1970-01-01
        相关资源
        最近更新 更多