找回密碼
 注冊帳號

掃一掃,訪問微社區

rpc詳細信息

2015-1-7 18:36| 發布者: 楊炎| 查看: 949| 評論: 0|原作者: 蠻牛|來自: unity3d腳本manual

摘要: rpc 詳細信息遠程過程調用(rpc) 讓您可以調用遠程計算機上的函數。調用 rpc 與調用常規函數相似而且一樣簡單,但需要理解一些重要差異。rpc 調用有非常多的參數,但涉及的網絡帶寬會隨著參數的數量和大小而增大。為 ...

rpc 詳細信息

遠程過程調用(rpc) 讓您可以調用遠程計算機上的函數。調用 rpc 與調用常規函數相似而且一樣簡單,但需要理解一些重要差異。

rpc 調用有非常多的參數,但涉及的網絡帶寬會隨著參數的數量和大小而增大。為獲得最佳性能,您應該將參數保持在最小值。

不同于常規函數調用,rpc 需要一個額外的參數表示 rpc 請求的接收方。提供了幾種可能的 rpc 調用模式,可涵蓋所有常見的使用情況。例如,您可以輕松地調用所有相連計算機、單個服務器或除發送 rpc 調用的其他所有客戶端或特定客戶端上的 rpc 函數。

通常用 rpc 調用執行游戲內所有客戶端上的事件或在特定雙方之間傳遞事件信息,但您可以發揮創造性,按照您想的進行使用。例如,只有在四個客戶端連接后才啟動的游戲服務器,在第四個客戶端剛連接時,向所有客戶端發送 rpc 調用,從而開始游戲。客戶端能向每個人發送 rpc 調用,用信號通知他已挑選物品。服務器可向特定客戶端發送 rpc 以便在連接后立即初始化,例如,賦予客戶端玩家數量、復活位置、團隊顏色等等。客戶端反過來可能只向服務器發送一次 rpc 來指定啟動選項,如偏愛的顏色或已經購買的物品。

使用 rpc

遠程調用函數前必須將該函數標記為 rpc。通過使用 rpc 屬性腳本中的函數添加前綴來完成操作:-

// 所有 rpc 調用需要 @rpc 屬性!

@rpc

function printtext (text : string)

{

debug.log(text);

}

所有的網絡通信都是通過“網絡視圖”(networkview) 組件處理的,因此您必須將其附加到對象上,該對象的腳本在調用 rpc 函數前先申明此函數。

參數

您可以使用以下變量類型作為 rpc 的參數:-

int

float

string

networkplayer

networkviewid

vector3

四元數

例如,以下代碼調用使用單個 string 型參數的 rpc 函數:-

networkview.rpc ("printtext", rpcmode.all, "hello world");

rpc()的第一個參數是待調用函數的名稱而第二個參數決定調用目標。在這種情況下,我們對連接到服務器的每個客戶端執行 rpc 調用(但調用不會緩沖以等待客戶稍后連接 - 有關緩沖的詳細信息,請查閱下文)。

從第三個開始算起的所有參數都傳遞到 rpc 函數而且通過網絡發送。在這種情況下,“hello world”會作為一個參數發送并作為 printtext 函數中的文本參數傳遞。

您還可以訪問其他內部參數,networkmessageinfo結構保留附加信息,例如 rpc 調用來自哪里。此信息自動傳遞,因此上文顯示的 printtext 函數可聲明為:-

@rpc

function printtext (text : string, info : networkmessageinfo)

{

debug.log(text + " from " + info.sender);

}

...而調用方式則與之前相同。

如上文所述,“網絡視圖”(network view) 必須附加到任何一個具有含 rpc 函數的腳本的“游戲對象” (gameobject) 上。如果您獨占 rpc (即,無狀態同步),那么“網絡視圖”(network view) 的狀態同步 (state synchronization)可以設置為關閉 (off)

rpc 緩沖

rpc 調用也可以進行緩沖。存儲緩沖的 rpc 調用并按照向每個連接的新客戶端發布調用的順序執行緩沖的 rpc 調用。這種實用的方法可確保后來的玩家獲得開始游戲所必需的所有信息。通常情況是參加游戲的每個玩家首先應該加載特定等級。您可以將此等級的詳細信息發送到所有連接的玩家,但考慮到將來加入的玩家則應該緩沖此信息。此方式可確保新玩家收到等級信息,就像一開始他就在游戲。

若有必要,您還可以從 rpc 緩沖移除調用。繼續以上示例,游戲可能從新玩家加入前就在提升起始等級,所以您可以移除原始緩沖的 rpc 并發送新的 rpc 請求新等級。

上一篇:unity的后臺渲染下一篇:社交api

相關閱讀

文章點評
相關文章
女校游泳队彩金 街机捕鱼攻略技巧 快乐十分胆拖价格表 闲来麻将2元一分微信群 淘宝快3 3d2003年开奖走势图 快乐赛车开奖官网 500万彩票苹果 福建11选5 极速快乐十分是官方 11月17日篮彩分析 什么游戏电脑可以赚钱的软件叫什么 广西快乐十分 炸金花可以开对方牌么 篮彩足彩专区 雪缘园北京单场比分 学历不高想赚钱