「 群體一次發送訊息 」: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)

arrow
arrow
    全站熱搜

    黃彥霖 發表在 痞客邦 留言(1) 人氣()