首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一UNet客户权限

统一UNet客户权限
EN

Stack Overflow用户
提问于 2015-07-03 14:35:50
回答 2查看 2.6K关注 0票数 2

我正在制作一个多人游戏,并试图在客户机上实例化一个新对象。这个物体应该由那个玩家单独控制。

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

代码语言:javascript
复制
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中也做了同样的操作,然后它在任何地方都被实例化,但是客户机无法控制它。但是,服务器可以控制它。

怎样才是正确的方法呢?创建一个应该由某个播放器而不是服务器控制的对象?

我试着在谷歌上搜索,但什么也找不到。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-24 10:18:44

我发现这是在Unity5.2中开始的,当前的beta版本说明将其作为一个特性列出:“联网:增加对非玩家对象的客户端授权的支持。”

所以每个人都会在九月收到这封信。

票数 1
EN

Stack Overflow用户

发布于 2015-07-03 17:42:10

奥德勒,我不知道答案,但在irc.freenode.net频道有一个社区#unity3d-unet可能!

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31209293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档