Unity 3D / Photon Fusion 2 中的 RPC 调用

问题描述 投票:0回答:1

我正在尝试在一个 Photon Fusion 2 房间中将多个用户连接在一起。连接后,我希望任何用户都能够选择代表要启动的另一个应用程序的按钮。一旦他们选择了一个应用程序,我希望每个人都被重定向到该应用程序。我有下面的代码,它对于选择该应用程序的人来说非常有效,但是,它对其他人没有任何作用。我在这里缺少什么?我不确定我是否理解 RPC 如何真正适用于 Fusion 2.TIA。

应用程序使用 Unity 3D 和 C# Photon Fusion 2 的操作 通过 VR 耳机上的 APK 执行

public void LaunchApp(string packageName)
    {
        RPC_LaunchApp(packageName);
    }

    [Rpc (RpcSources.All, RpcTargets.StateAuthority)]
    public void RPC_LaunchApp(string packageName)
    {
        Debug.Log("We are in the Launch App Method");
        bool fail = false;
        string bundleId = (string.IsNullOrEmpty(packageName) || packageName.ToUpper() == "TEST" ? Application.identifier : packageName).Trim();
        AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject ca = up.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaObject packageManager = ca.Call<AndroidJavaObject>("getPackageManager");

        AndroidJavaObject launchIntent = null;
        try
        {
            launchIntent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", bundleId);
        }
        catch (System.Exception e)
        {
            Debug.Log(e);
            fail = true;
        }

        if (fail)
        {
            //open app in store
            Application.OpenURL("https://google.com");
        }
        else
        {
            //open the app
            ca.Call("startActivity", launchIntent);
        }

        up.Dispose();
        ca.Dispose();
        packageManager.Dispose();
        launchIntent.Dispose();
    }

到目前为止,我已经尝试了上面的代码和几个不同版本的 RPC 属性。

c# android unity-game-engine rpc photon
1个回答
0
投票

您确定需要 RPC 吗? 您的脚本附加到 NetworkObject,因此其中一个玩家(或服务器)对其具有权限。并且您的 RPC 将 RpcTarget 设置为 StateAuthority,因此基本上无论哪个玩家使用 LaunchApp 方法,它都会在对该对象拥有权限的玩家上调用 RPC_LaunchApp。我想您可能希望 Authority/Host 玩家为所有玩家启动应用程序,在这种情况下,我会在 RPC Sources.StateAuthority Targets.All 中以相反的方式设置 Source 和 Target。

© www.soinside.com 2019 - 2024. All rights reserved.