在进入对象的触发区域时,会向播放器显示一条消息(通过标签找到)。如果玩家然后按下取件按钮,则该物品被添加到他们的库存中。它在单人游戏中运行良好。
当我使用PUN(Photon Networking)时,它会向所有玩家显示(因为所有玩家的脚本都会检测到该事件)并且所有玩家都可以拾取该项目。我该如何解决这个问题?
我相信修复这篇文章将使我能够理解如何解决其他问题:
void OnTriggerEnter(Collider col)
{
if (col.gameObject.tag == "Player")
{
displayMessage = true;
}
}
void OnTriggerExit(Collider col)
{
if (col.gameObject.tag == "Player")
{
displayMessage = false;
}
}
bool stop = false;
void OnGUI()
{
if (displayMessage)
{
if (GameObject.FindGameObjectWithTag("UInventory").GetComponent<UInventory>().inventoryMode == "Weight")
{
GUI.Label(new Rect((Screen.width/2)-200, (Screen.height/2)-30, 200, 45), "Press " + pickUpItem.ToString() + " To Take " + itemName + "(" + itemWeight + "kg)");
}
else
{
GUI.Label(new Rect((Screen.width/2)-200, (Screen.height/2)-30, 200, 45), "Press " + pickUpItem.ToString() + " To Take " + itemName);
}
}
}
答案 0 :(得分:0)
仅当客户拥有网络对象时才应执行触发代码。使用&#39; isMine&#39; PhotonView&#39;的属性对象的组件,用于检查是否为真。