1. 程式人生 > >【UE4學習記錄】UE4網路方面的探索0-2

【UE4學習記錄】UE4網路方面的探索0-2

在上一章中,我粗略的表達了在最開始的UI介面設定上的操作,沒有用到一絲程式碼,直接藍圖敲定去實現基本的東西。

接下來回到正題,我們需要實現UI所對應的具體功能了。

第一步:整理思路

首先確定UI 的按鈕和Text等一些相關內容沒有出錯,嘗試編譯儲存後不會報錯等(當然第一章結尾的時候就應該確保沒有問題);

第二步:繼續用藍圖去實現吧,畢竟cpp程式設計是個燒腦的過程,怎麼簡單怎麼來。

找到之前建立的三個UI,雙擊IntServerUI,開啟確定按鈕的藍圖,我們去嘗試實現怎麼連線伺服器。

最終藍圖呈現如下樣式就可以了


PS:因為UE4的強大,你在預覽播放時候,兩個播放視窗其實在你本機上已經實現AutoLine,這個編寫連線操作藍圖其實在預覽播放時候會顯得多餘,但是,一旦你的專案需要打包,那麼這個是必要的操作。

在編譯儲存後,我們要做的是找到你設定的GameMode(世界設定裡可以設定GM),並且設定你的Player Controller,在GM裡面我們進行藍圖的拖拉。

首先,你要做的是在左邊我的藍圖中,新建一個變數並取個名字,設定它的變數型別是你的playercontroller。我的是HHHPlayerController.

考慮到,一步一步寫藍圖,常規邏輯寫下來會很多,很亂。我決定使用函式去不斷呼叫來減少工作量。

新建的函式叫做Login,取名字好認人!在細節面板中的Input新建一個player,變數型別是你的playercontroller,

字打多了不如看圖!


函式貌似沒什麼問題吧,那就呼叫它唄。

回到剛剛的事件圖表,我們拖入這個函式,別急著連線配對。

因為通常兩個藍圖元件之間的player互聯會出現一定的問題,甚至是連線不了,我們需要做的是轉換一下就好。

點住player節點向右釋放,出現呼叫列表,輸入cast會出現cast你的playercontrollor,點選即可,不會就看下圖


等等,忘記設定函式藍圖內容了,請跳轉到函式藍圖圖表中,同時我還注意到一個問題。

平時玩遊戲建立連線後服務端會給你一些反饋,我們需要再新建一個函式用作反饋,具體操作就是新建-編輯-拖動等等

BTW:新建的函式裡面input需要建立兩個變數,一個當作目標,就是我們自己me,一個是反饋的東西new。

注意一下是不是選定型別的陣列!

這些完全可以舉一反三,我在這裡放一下成型的藍圖就好。



Example是區域性變數,當作一個測試,防止編譯出錯。

接下來的事件圖表中,出現的藍圖,本人不才,無法用更恰當的語言去表述這是什麼,大概是分配什麼什麼的意思。

所以參照藍圖去實現就好


接下來我們login後肯定也要login out

那麼又是函式!並且接下來的難度比較大,邏輯上需要一些理解時間。

下面的藍圖是分別對函式,事件圖表的編寫。仔細理解不難,乍一看暈乎。





接下來,我們需要在playercontrollor裡寫一些藍圖。

在pc裡建立變數name同樣是string型別。

name在後面是可以編輯修改建立的,因為要取名字!。

我們再回到playerlogin那裡,

按我的方法來構建藍圖

編譯後的藍圖如下:


這時候,我們可以回到最初第一章的UI介面,那感人又熟悉的地方。

因為,我們需要把名字等什麼顯示到UI上。

在早之前的第一章,我們在TEXTBOX裡面加入了text,現在可以派上用場了。

去到playercontrollor,在藍圖裡加入get all widget of class字樣和print string.

同樣,這些需要迴圈語句來表示更新的狀態。

get all widget of class裡面請選好那個最初的介面UI,

最後如下:


在mainUI裡面設定好函式,取名updateplayer,用作更新,在上面藍圖裡呼叫。

後來想想這個流程貌似不夠完善,於是我改成下面的方案


還記得關卡藍圖嗎,開啟,在裡面設定如下:


本人測試的時候發現其他問題,除錯中,發現雖然編譯沒問題,但是冥冥之中,有什麼東西好像多餘了且出錯了。

於是乎。又是漫長的尋找過程,截止目前,本博文已經修改編寫了一天了。突然反省為啥要開發遊戲,去鑽研這個,feel like shit!

但是,我就是喜歡啊,那麼繼續吧!

42分鐘的研究,發現playercontrollor中不完善,直接把關卡藍圖的東西複製到pc裡就好了,看下圖:


這是修改後的playercontrollor。(截圖內容為關卡藍圖修改到pc上的內容,可以仔細對照)

接下來的難度很高,鄙人不才,實在是沒法繼續記錄,這塊內容。我將繼續研究,對照教學繼續深入。

本文暫停ing