2015-04-05 118 views
0

我有一個關於RPC和Photon PUN的問題。Unity Photon PUN RPC調用

我在我的遊戲中有1個GameObject,它調用一個RPC方法。這個遊戲對象包含一個C#腳本(包含RPC方法)和PhotonView組件與/沒有(應該是相同的)觀察腳本和ObserveOption等於關閉。

我有一個角色必須拍攝到一個立方體。此多維數據集具有前面描述的腳本和組件。

RPC發送一次(當立方體與彈丸發生碰撞時),但在我的場景中,我有許多立方體應該接收信息,因爲我必須減少擊中立方體的健康狀況。問題是隻有一個Cube接收RPC調用(RPC在遊戲開始時被第一個實例化對象捕獲),但RPC應該被我場景中的所有立方體接收(是嗎?)。

立方體完全相同,但它們具有不同的photonView ID(正確),因此我們可以檢查減少健康的命中立方體是否正確。

這是代碼的顯著部分:

public static void reduceHealthRPC(float damage, int viewID)  
{   
    photonView.RPC("reduceHealth", PhotonTargets.All, damage, viewID);  
} 

[RPC] 
public void reduceHealth(float damage, int viewID) 
{ 
    if(this._viewID != viewID) 
    { 
     Debug.Log ("The view ID is not mine. My viewID is: " + _viewID + ", and the one which is coming form RPC is: " + viewID); 
     return; 
    } 

    currentHealth -= damage; 
    Debug.Log("My life is: " + currentHealth); 
} 

請幫我unerstand我在做什麼錯。 謝謝。

回答

0

如果您需要爲所有多維數據集調用RPC,請爲每個多維數據集執行此操作。 目前,您僅針對由靜態'photonView'變量引用的對象調用RPC。根據初始化的方式,RPC調用該對象。

0

我可能會遲到,但請嘗試PhotonTargets.AllBuffered,這將使RPC調用在稍後加入的播放器上運行。

0

可能是超晚了,但你試過嗎?所有立方體均附有cube.cs。 在main.cs

cube[] allCubes = FindObjectsOfType<cube>(); 

for (int x = 0; x < allCubes.length; x++) 
allCubes[x].reduceHealthRPC(dam,id); 

這將代碼發送到所有多維數據集與一個目標ID,如果這是你的目標,但你要好得多,只是RPC在各個立方體。

相關問題