新客户更改权限统一镜像

问题描述

我目前正在开发一款 3d 统一游戏,并尝试使用镜像使其成为多人游戏。我已经设置好游戏并且一切都在独立的相机移动和动作下顺利运行,但是当我尝试制作相机脚本以附加到播放器预制手电筒(如下所示)时,它遇到了错误: 第一个托管服务器的人拥有完全权限并且能够切换摄像头。然而,它只切换每个玩家单独的相机。这不是什么大问题,我可以轻松解决这个问题。问题是加入服务器的第二个及以后的客户端没有权限,当我尝试切换脚本时,它警告我没有权限的对象正在尝试使用命令,并且没有执行。 有没有办法确保大厅中的每个玩家都有权限? 在堆栈溢出上有一个类似的问题,但它从未得到回答,所以我在这里重新措辞。 手电筒代码

// Turns the light component of this object on/off when the user presses and releases the `L` key.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mirror;

public class FlashlightToggle : NetworkBehavIoUr
{

    public Light lightaffected;

    void Start()
    {
        //get the localplayer's light,where the small bug comes in don't worry about it
        if (!isLocalPlayer) return;
            lightaffected = GetComponentInChildren<Light>();
    }

    void localToggleLight()
    {
        //just toggle the light is all
        lightaffected.enabled = !lightaffected.enabled;
    }

    [Command]
    void CmdToggleLight()
    {
        //Apply it to all other clients
        localToggleLight();
        RpcToggleLight();
    }

    [ClientRpc]
    void RpcToggleLight()
    {
        //toggle locally
        if (!isLocalPlayer) return;
        localToggleLight();
    }

    void Update()
    {
        // Toggle light on/off when L key is pressed.
        // Test if Local Client or Another


            if (Input.GetKeyUp(KeyCode.L))
            {
                if (isServer)
                {
                    RpcToggleLight();
                }
                else
                {
                    CmdToggleLight();
                }
            }
        
    }
}

我为格式道歉

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...