如何使用Photon共享多人游戏中的材质更改?

时间:2018-09-29 23:39:13

标签: c# unity3d arkit multiplayer

我正在使用本教程来开发一个简单的AR多人游戏应用。
https://www.youtube.com/watch?v=n3a-aaSYR8s
SourceCode

一个用户将一个简单的3D立方体放置在房间的某个地方,然后他和其他将加入游戏的玩家可以通过单击一个执行简单代码的按钮来更改其材质:

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

public class ChangeMaterial : MonoBehaviour {


    public Material material_1;
    public Material material_2;
    public GameObject MainObject;


    void Update(){
        MainObject = GameObject.FindWithTag("Player");
    }



    public void assignMaterialOne(){
            MainObject.GetComponent<Renderer> ().material = material_1;
        }

    public void assignMaterialTwo(){
        MainObject.GetComponent<Renderer> ().material = material_2;
    }



}

它适用于放置立方体的一个玩家,但是当其他玩家加入游戏时,他们会看到具有默认材质的立方体。他们可以更改其材质,但仅在其设备上可见。

如何为所有用户同步和显示立方体的材质或动画的更改?
由于本教程使用Photon,是否有一种方法使用Photon

非常感谢您!

1 个答案:

答案 0 :(得分:1)

为此,您需要通过网络发送数据,以供参考材料(您可以使用材料名称,但是使用简单查找表的整数或字节将更有效地节省带宽)

因此,在玩家拥有并控制的实例上,您可以在更改此材质参考时进行设置,所有其他从属实例将检查该更改并相应地调整自己的实例。

为实现此目的,如果数据很少发生离散变化,则可以发送RPC(通过网络发送的消息),如果数据不断变化(例如播放器的位置和轮换),则可以序列化数据。

因此,我认为您可以使用RPC了:

https://doc.photonengine.com/en-us/pun/current/gameplay/rpcsandraiseevent

再见

吉恩