「 群體一次發送訊息 」:RPC 的使用
讀這篇文章前,最好是先讀過 Unity 區域連線:http://lolikitty.pixnet.net/blog/post/23148489。
參數可以是 String,boolean,int,float,NetworkPlayer,NetworkViewID,Vector3,Quaternion。
發送訊息 | networkView.RPC(<方法名稱>,<要傳給誰?>,<傳遞的參數>,<傳遞的參數,可以一直延伸下去>...); |
在 客戶端 / 伺服端 方法名稱前面加入 @RPC 就是RPC函數,可以被 networkView.RPC() 傳遞參數進來。
另外,被@RPC標註的函式,小括號()可以『寫』或『不用寫』傳入的參數
// 只要使用到RPC,或者同步化,都要在腳本最後一行加入這一段程式碼
程式同步化 / RPC | @script RequireComponent(NetworkView) |
//-------------------------------------------------------------------------------伺服器腳本
function Start(){
Network.InitializeServer(32,1024,! Network.HavePublicAddress());
MasterServer.RegisterHost("AAA","BBB","CCC");
}
function OnPlayerConnected() {
// 參數是 RPCMode 不是 RPC,要小心
networkView.RPC("DDD", RPCMode.AllBuffered, "此訊息所有人都看的到,大家好!!");
}
@RPC
function DDD(i : String){
print("伺服器傳遞過來的訊息 : " + i);
}
@script RequireComponent(NetworkView)
//-------------------------------------------------------------------------------客戶端腳本
function Awake(){
MasterServer.ClearHostList();
MasterServer.RequestHostList("AAA");
}
function Update () {
if (MasterServer.PollHostList().Length != 0) {
var data : HostData[] = MasterServer.PollHostList();
for(var e in data){
Network.Connect(e.ip,e.port);
}
MasterServer.ClearHostList();
}
}
@RPC
function DDD(i : String){
print("伺服器傳遞過來的訊息 : " + i);
}
function OnConnectedToServer() {
Debug.Log("客戶端:已連接至伺服器");
}
@script RequireComponent(NetworkView)
留言列表