unity3d 玩家预设值在他示例化时是相同的,但主车是正常的

eivgtgni  于 2022-11-25  发布在  其他
关注(0)|答案(2)|浏览(152)

我想要玩家选择的汽车衍生.......
但问题是,每当其他本地球员选择。所有的汽车是相同的(意思是球员2和球员3)。
但是主客户端的车没有问题(意思是主机玩家),车和他选择的是一样的。
这是我的代码.....
两个剧本在不同场景中。

public GameObject Player;

    public GameObject Player2;

    public GameObject Player3;

        Vector2 randomPosition = new Vector2(Random.Range(minx, maxX), Random.Range(minY, maxY));

        string car = PlayerPrefs.GetString("getcar");

        if(car== "lamborgini")

        {

            PhotonNetwork.Instantiate(Player.name, randomPosition, Quaternion.identity);

        }

        else if (car == "lam")

        {

            PhotonNetwork.Instantiate(Player2.name, randomPosition, Quaternion.identity);

        }  

        else if (car == "gini" )

        {

            PhotonNetwork.Instantiate(Player3.name, randomPosition, Quaternion.identity);

        } 

        else 

        {

            PhotonNetwork.Instantiate(Player3.name, randomPosition, Quaternion.identity);

        }

下面的代码中,玩家通过名称enter image description here选择汽车

ykejflvf

ykejflvf1#

string car = PlayerPrefs.GetString("getcar");获取本地值。从代码中,还不清楚它是如何工作的,但有两个(可能更多,但我现在想到了这两个)有意义的选项:

  • 在大厅里当每个人都选了一辆车(并将其保存在本地),所有客户端都会向主机发送就绪信号(通过PunRPC for PhotonNetwork.MasterClient,您需要在主机端跟踪此操作),启用“开始游戏”选项(或者主持人可以随时开始游戏,但在这种情况下,您必须添加一个默认选择值),在PhotonNetwork.LoadScene()之后,每个人都发送他们选择的汽车(ID、名称等)发送给同样使用PunRPC和RpcTarget.AllBuffered的每个人。
  • 或者每个人通过PunRPC发送他们在菜单中的选择,主机存储它们,并且在PhotonNetwork.LoadScene()之后当玩家加入时,主机向每个人发送所选择的值(也是PunRPC,并且应该是RpcTarget.AllBuffered)。

这两种情况都应该使用RpcTarget.AllBuffered,如果稍后有人连接的话。

2uluyalo

2uluyalo2#

解决问题的小子!
我使用静态变量y来获取或设置除player prefs之外的值,我不知道为什么player prefs不能在每次player生成时更新,这就是我使用静态变量的原因。
谢谢你们帮我

相关问题