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

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

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

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

事實上,聲網(wǎng)也有許多采用 Unreal 的開發(fā)者。為了能讓開發(fā)者可以在游戲中快速實現(xiàn)實時音視頻對話,聲網(wǎng) 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)。

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

Agora SDK 優(yōu)勢

超低延時

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

抗弱網(wǎng)

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

易于集成

還有一點非常重要的,就是需要將實時音視頻與游戲進行簡單、快速的結(jié)合。聲網(wǎng)的SDK非常簡單易用,一個音視頻通話或直播應(yīng)用,只需要幾行代碼,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 注冊賬號一枚(免費注冊,見官網(wǎng) Agora.io)
  • 如果你的企業(yè)網(wǎng)絡(luò)存在防火墻,請在聲網(wǎng)文檔中心搜索「應(yīng)用企業(yè)防火墻限制」,進行配置。

新建項目

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

現(xiàn)在,讓我們先從草圖開始,創(chuàng)建一個項目。如果已經(jī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 默認是將它注釋掉的,這會導(dǎo)致在編譯的時候報錯。

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

集成Agora SDK

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

1.將 SDK 復(fù)制到這個路徑下 [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,確定插件已經(jīng)生效

創(chuàng)建游戲?qū)嵗?/strong>

在項目的 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 的設(shè)定為從 Self 獲取參數(shù)。

通過拖拽,將 Construct Agora 輸出 Return Value 引腳設(shè)定為 Promote to variable。把新的變量名設(shè)定為“Agora”,點擊“????”圖標,把它設(shè)定為 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:右鍵點擊目錄內(nèi)容,然后選擇 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。

然后如下圖所示來設(shè)置

Introduction Widget(介紹控件)

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

在EncriptionTypeComboBox中添加以下變量:

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

InctoductionWidget_BP 會從 AgoraGameInstance_BP 獲得對象 Agora,在控件底部的 Text Block 中設(shè)定 Agora SDK 版本?;氐皆O(shè)計界面,選擇 Join 按鈕,在右側(cè)的 Event 中添加 On Clicked 事件

像圖中一樣,來設(shè)定事件執(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 與項目設(shè)置

進入 Window->World設(shè)置,把 GameMode 設(shè)為 GameMode_BP。

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

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

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

    這篇文章中我們來談一談C++的template模板中class與typename關(guān)鍵字的區(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++調(diào)用matlab函數(shù)的實例

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

    這篇文章主要介紹了C++調(diào)用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),文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C語言數(shù)據(jù)在內(nèi)存中的存儲流程深入分析

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

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

    C/C++內(nèi)存管理之new與delete的使用及原理解析

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

最新評論