欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何基于 Blueprint 在游戲中創(chuàng)建實時音視頻功能

 更新時間:2020年05月29日 09:32:02   作者:聲網Agora  
我們在本文先來講講如何在 Unreal 中用 Blueprint 快速實現(xiàn)。稍后會分享基于 C++的實現(xiàn)步驟。感興趣的朋友跟隨小編一起看看吧

近日,Epic 公布了他們?yōu)榇螘r代游戲準備的 Unreal 5 游戲引擎,以及一份效果驚艷的 Demo。據(jù)稱,游戲中的每個資源有一百萬個繪制三角面,每一幀有超過十億個繪制三角面。也就是說,開發(fā)者構建的游戲場景,能獲得電影特效場景般的視覺體驗。

事實上,聲網也有許多采用 Unreal 的開發(fā)者。為了能讓開發(fā)者可以在游戲中快速實現(xiàn)實時音視頻對話,聲網 Agora Unreal SDK Beta 版也已上線。

由于 Unreal 為開發(fā)者提供了兩種開發(fā)方式,一種是 Blueprint,即可視化編程,另一種是基于 C++開發(fā)。所以 Agora Unreal SDK 也提供了兩個版本—— Blueprint 和 C++,兩個版本均已上傳至 Agora Community 的 Github :

Blueprint版本:https://github.com/AgoraIO-Community/Agora-Unreal-SDK-Blueprint

C++版本:https://github.com/AgoraIO-Community/Agora-Unreal-SDK-CPP

大家可以在 Github 中 fork,并集成到 Unreal 項目中。如果遇到問題可在 Github 提 issue ,或在 RTC 開發(fā)者社區(qū)發(fā)帖 的反饋。

可以實現(xiàn)什么場景呢?

許多 3A 游戲大作都是基于 Unreal 引擎開發(fā)的,比如堡壘之夜、戰(zhàn)爭機器、火箭聯(lián)盟等。在一些游戲中,隊友之間需要通過語音交流配合。而這種游戲中的實時語音對話,就可以通過 Agora Unreal SDK 來快速實現(xiàn)。

在類似于吃雞的游戲中,玩家不僅要能聽到隊友的語音,還要能憑借聲音來辨別隊友所在的方位。聲網Agora SDK 就支持該功能,它可以將玩家與其在聲場中的位置和方向對應,來提供聽聲辨位的能力。

Agora SDK 優(yōu)勢

超低延時

游戲中的語音對話要求實時音視頻技術的延時要小于400甚至300毫秒以內,玩家之間才能達到無障礙溝通的效果。聲網提供的軟件定義實時網SD-RTN™擁有超低延時特性,可做到全球端到端延時小于400ms,延時中位數(shù)76ms,處于行業(yè)領先水平。

抗弱網

不論是在 4G 或者 Wi-Fi 網絡情況下,玩家隨時會面臨比較復雜的網絡情況。而且,在弱網、非常高丟包情況下,要保證能進行良好的音視頻互動。聲網具備優(yōu)秀的弱網傳輸和抗丟包算法,可以在 60% 的丟包環(huán)境下保障音視頻流暢,70% 的網絡丟包環(huán)境下保障語音的流暢。

易于集成

還有一點非常重要的,就是需要將實時音視頻與游戲進行簡單、快速的結合。聲網的SDK非常簡單易用,一個音視頻通話或直播應用,只需要幾行代碼,30分鐘就能輕松搞定。

那么如何實現(xiàn)呢?我們在本文先來講講如何在 Unreal 中用 Blueprint 快速實現(xiàn)。稍后會分享基于 C++的實現(xiàn)步驟。

Agora Unreal SDK - Blueprint 實現(xiàn)

開發(fā)前的準備

  • Unreal 4.23 以上版本
  • Visual Studio 或 Xcode(版本根據(jù) Unreal 配置要求而定)
  • 運行 Windows 7 以上系統(tǒng)的 PC 或 一臺 Mac
  • Agora 注冊賬號一枚(免費注冊,見官網 Agora.io)
  • 如果你的企業(yè)網絡存在防火墻,請在聲網文檔中心搜索「應用企業(yè)防火墻限制」,進行配置。

新建項目

首先我們要創(chuàng)建一個 Unreal 項目,然后將 Agora SDK 集成到項目中。

現(xiàn)在,讓我們先從草圖開始,創(chuàng)建一個項目。如果已經創(chuàng)建了項目,那么可以直接跳過這一步。

1.打開 Unreal Engine Editor,選擇 New project。

2.在新項目面板上,在項目類型中選擇 C++,然后給項目起個名,選擇項目保存路徑,完成創(chuàng)建。

3.確保在[your_project]/Source/[project_name]/[project_name].Build.cs文件的PrivateDependencyModuleNames一行,去掉注釋。Unreal 默認是將它注釋掉的,這會導致在編譯的時候報錯。

// Uncomment if you are using Slate UI
PrivateDependencyModuleNames.AddRange(new string[]
 { "UMG", "Slate", "SlateCore" });

集成Agora SDK

接下來我們在項目中集成 Agora SDK

1.將 SDK 復制到這個路徑下 [your_project]/Plugins

2.把插件依賴添加到:

[your_project]/Source/[project_name]/[project_name].Build.cs 文件

的私有依賴(Private Dependencies)部分

PrivateDependencyModuleNames.AddRange(new string[] 
{ "AgoraPlugin", "AgoraBlueprintable" });

3.重啟 Unreal

4.點擊 Edit->Plugin,在分類中找到 Project->Other,確定插件已經生效

創(chuàng)建游戲實例

在項目的 Content 界面中,點擊右鍵,選擇 Blueprint Class

在All Classes中輸入“Game Instance”并選擇 Game Instance

把新的 Game Instance 命名為“AgoraGameInstance_BP”

由于Game Instance會在其它類之前進行初始化,所以我們要先創(chuàng)建 AgoraGameIntance。雙擊進入 AgoraGameInstance_BP 的 Blueprint,在Blueprint的工作區(qū)域點擊右鍵會顯示出菜單,輸入“Event Init”,并選擇它。

拖拽出 Event Init,點擊輸出接口后,輸入“Construct”,選擇Construct Object from Class function。

在 Class 的下拉菜單中選擇 Agora,然后將 Outer 的設定為從 Self 獲取參數(shù)。

通過拖拽,將 Construct Agora 輸出 Return Value 引腳設定為 Promote to variable。把新的變量名設定為“Agora”,點擊“????”圖標,把它設定為 public。

“Agora”的輸出,我們找到并選定為“Initialize”

創(chuàng)建 Game Mode(游戲模式)

Game Mode 將被用于切換 widgets。就像創(chuàng)建 Game Instance 一樣,在 Blueprint 中創(chuàng)建新的 Game Mode:

命名為“GameMode_BP”

創(chuàng)建 Widgets(控件)

在項目的 Content 中創(chuàng)建新的目錄 Widgets_BP。在這個目錄下添加兩個 Widgets:右鍵點擊目錄內容,然后選擇 User Interface -> Widget Blueprint:

將它們分別命名為“IntroductionWidget_BP”和“VideoCallWidget_BP”

Game Mode

回到 GameMode_BP,點擊“+”添加兩個 function,并分別命名為“SetInctoductionView”和“SetVideoCallView”。

添加兩個變量,“IntroductionWidget_BP”和“VideoCallWidget_BP”,把他們的類型分別改為 Introduction Widget BP 和 Video Call Widget BP。

然后如下圖所示來設置

Introduction Widget(介紹控件)

進入 InctoductionWidget_BP,創(chuàng)建控件的界面,就像圖中所示的:

在EncriptionTypeComboBox中添加以下變量:

回到繪制模式中,找到 Event Construct 并執(zhí)行,如圖所示:

InctoductionWidget_BP 會從 AgoraGameInstance_BP 獲得對象 Agora,在控件底部的 Text Block 中設定 Agora SDK 版本。回到設計界面,選擇 Join 按鈕,在右側的 Event 中添加 On Clicked 事件

像圖中一樣,來設定事件執(zhí)行邏輯:

Video Call Widgets(視頻通話控件)

在 Demo 中找到 Content/ButtonTextures 目錄(你不用打開這個項目,只需要在文件中找到它就行)。所有的按鈕 texture 都保存在這里。在你項目的 content 中創(chuàng)建一個新的目錄“ButtonTextures”,把這里所有的 texture 都拖拽放到里面。

進入 VideoCallLevel_BP,創(chuàng)建 widget 界面:

打開可視化視圖,增加 isLocalAudioMuted、isLocalVideoMute 布爾變量,(Graph),增加 CurrentUserId 64 位整數(shù)變量。添加功能與執(zhí)行邏輯如下圖所示:

進入 Event Graph,然后按照以下步驟執(zhí)行

創(chuàng)建新的 Level

進入 project Content,創(chuàng)建 Level 目錄(如果之前沒有創(chuàng)建)。右鍵單擊目錄,選擇新 Level:

將 Level 重命名為“VideoCallLevel_BP”

選擇這個 Leve,點擊頂部的 Blueprint 圖標,選擇 Open Level Blueprint 選項:

如圖中所示執(zhí)行Event Begin Play

修改 World 與項目設置

進入 Window->World設置,把 GameMode 設為 GameMode_BP。

進入 Edit->Project設置,選擇 Map&Modes,按照下圖所示設定值。

好了,現(xiàn)在可以運行游戲了

下周我們將分享基于 Unreal C++ 與 Agora Unreal SDK 如何實現(xiàn)游戲中的實時音視頻。

同時,我們還想邀請體驗 Agora Unreal SDK Beta 版的開發(fā)者們填寫一個有獎問卷,希望大家可以深度參與SDK 的功能規(guī)劃。

總結

到此這篇關于Unreal 5 公布的同時Agora Unreal SDK 也已為你準備好了的文章就介紹到這了,更多相關Unreal 5 Agora Unreal SDK 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++中map和set的使用及示例

    C++中map和set的使用及示例

    map和set是STL容器中的部分,本文主要介紹了C++中map和set的使用小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • 基于C++11實現(xiàn)手寫線程池的示例代碼

    基于C++11實現(xiàn)手寫線程池的示例代碼

    在實際的項目中,使用線程池是非常廣泛的,本文主要介紹了基于C++11實現(xiàn)手寫線程池的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • C++的靜態(tài)類型檢查詳解

    C++的靜態(tài)類型檢查詳解

    這篇文章主要為大家詳細介紹了C++的靜態(tài)類型檢查,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++的template模板中class與typename關鍵字的區(qū)別分析

    C++的template模板中class與typename關鍵字的區(qū)別分析

    這篇文章中我們來談一談C++的template模板中class與typename關鍵字的區(qū)別分析,同時會講到嵌套從屬名稱時的一些注意點,需要的朋友可以參考下
    2016-06-06
  • 純C語言:遞歸最大數(shù)源碼分享

    純C語言:遞歸最大數(shù)源碼分享

    這篇文章主要介紹了純C語言:遞歸最大數(shù)源碼,需要的朋友可以參考一下
    2014-01-01
  • C語言 用while循環(huán)求和的平均值操作

    C語言 用while循環(huán)求和的平均值操作

    這篇文章主要介紹了C語言 用while循環(huán)求和的平均值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C++調用matlab函數(shù)的實例

    C++調用matlab函數(shù)的實例

    這篇文章主要介紹了C++調用matlab函數(shù)的方法,包括封裝matlab函數(shù),編譯matlab函數(shù)及C++環(huán)境配置,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • c++使用Easyx圖形庫實現(xiàn)飛機大戰(zhàn)

    c++使用Easyx圖形庫實現(xiàn)飛機大戰(zhàn)

    本文詳細講解了c++使用Easyx圖形庫實現(xiàn)飛機大戰(zhàn),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C語言數(shù)據(jù)在內存中的存儲流程深入分析

    C語言數(shù)據(jù)在內存中的存儲流程深入分析

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內存位置。這意味著,當您創(chuàng)建一個變量時,就會在內存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內存和決定在保留內存中存儲什么
    2022-10-10
  • C/C++內存管理之new與delete的使用及原理解析

    C/C++內存管理之new與delete的使用及原理解析

    這篇文章主要介紹了C/C++內存管理之new與delete的使用及原理解析,本文通過實例代碼圖文相結合給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-08-08

最新評論