Unity C# 網路連線RPC廣播
- 此篇重點語法 * * * * *
→ [ClientRpc]
void RpcDemo(){
}
e.g[ClientRpc]←宣告一個廣播函式
廣播函式void RpcDemo(){
↑ ↑
↑前面一定要加Rpc,後面可以自己取。
}
- 用法
→ 當host呼叫這個RPC函式時host端會執行這個函式的內容,而其他client端也會同步執行這個函式來呈現連線效果(注意!只有host端可以呼叫這個函式喔!所以ClientRpc可以說是一個單向的廣播)
- 此篇效果* * * *
- 大概了解重點後,接下來進入完整教學 -
一、延續我們上一篇我們已經可以同步兩玩家的動畫與座標了,接下來我們做的是讓「事件」進行同步(補充:上禮拜我寫網誌的時候用的模組這周已經變成收費模組了....所以我這篇換了一新的模組,所以請不要搞混了喔!這還是同一系列的教學XDD)
二、本篇要同步的「事件」是:當玩家按下空白鍵後自己的頭上會出現一個紅色方塊。
1. 首先我們先在角色身上新增一個子物件。
2. 再來我們把這個cube的Position設定為(0 ,2 ,0 )這樣cube就會出現在玩家頭上。
3. 最後我們幫cube加上一個顏色(紅色)方便辨識。
4. 為了效果呈現,我們將角色身上的cube預設為false。
三、接下來我們新增一段叫做RemoteEvent的程式碼。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//使用UnityEngine.Networking的API
using UnityEngine.Networking;
//把這個類別改成網路行為才可以使用UnityEngine.Networking的API
public class RemoteEvent : NetworkBehaviour {
void Update () {
//判斷是不是本地端的玩家
if (isLocalPlayer)
{
//如果按下空白鍵可以觸發事件
if (Input.GetKey(KeyCode.Space))
{
//呼叫且執行網路呼叫函式,讓client端上的自己也執行網路呼叫函式中的內容
RpcShowCube();
}
}
}
//宣告這個函式為網路呼叫函式
[ClientRpc]
void RpcShowCube()
{
//抓取自身第一個子物件(Cube)並將其設定為Active狀態,這樣我們就可以看到Cube了
this.transform.GetChild(0).gameObject.SetActive(true);
}
}
四、程式碼新增完畢後我們到Unity中按下PLAY,並且按下空白鍵可以看到我們成功的在本地端執行了網路呼叫函式。
五、接下來我們匯出這個專案並執行(File→Build & Setting→ Build & Run),並且也在Unity執行,當我們在Host端按下空白鍵可以看到Client端的視窗也同步出現紅色Cube囉!
六、如果你成功做到這一步,代表你已經能夠成功利用網路呼叫函式囉!接下來就看你們如何活用在自己的遊戲中囉!不過因為這個函式是「單向」呼叫的(Host to Client ),所以下一篇我們會教各為如何從Clientt端上呼叫Host端的函式,就請大家敬請期待囉!
- 複習重點語法 * * * * *
→ [ClientRpc]
void RpcDemo(){
}
e.g[ClientRpc]←宣告一個廣播函式
廣播函式void RpcDemo(){
↑ ↑
↑前面一定要加Rpc,後面可以自己取。
}
上一篇《UnityC#網路角色動畫同步)》
下一篇《UnityC#網路連線Command廣播)》
-------------------------------------------------------------------------------------------------------------------------------------
我們有粉絲專頁囉!!!
如果怕有問題連絡不到我們,歡迎隨時私訊FB粉專哦!!!
https://www.facebook.com/Straying2018/
● 如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !
● 對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!
● 有任何想知道的功能也歡迎告訴我們,我們會盡快寫成部落格分享給大家!
- By Alex-
留言列表