我正在使用本教程开发一个简单的AR多人应用程序。
https://www.youtube.com/watch?v=n3a-aaSYR8s
一个用户将一个简单的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来实现它呢?
发布于 2018-10-01 19:10:23
为此,您需要通过网络发送数据,在本例中是对材料的引用(您可以使用材料名称,但使用简单的查找表的整数或字节将更有效地节省带宽)
因此,在您的播放器拥有和控制的实例上,您可以在更改时设置此材质引用,所有其他从属实例将检查该更改并相应地调整它们自己的实例。
为此,如果数据是离散的,则可以发送RPC (通过网络发送的消息),或者如果数据确实不断变化(如球员位置和轮换),则可以序列化数据。
因此,我认为在您的情况下,您将能够使用RPC:
https://doc.photonengine.com/en-us/pun/current/gameplay/rpcsandraiseevent
https://stackoverflow.com/questions/52573407
复制相似问题