虛幻引擎 4 學習筆記 [1] :藍圖編程 Demo
? 最近學習虛幻引擎,主要看的是 Siki 學院的課,課程鏈接:Unreal藍圖案例 - 基礎入門 - SiKi學院|SiKi學堂 - unity|u3d|虛幻|ue4/5|java|python|人工智能|視頻教程|在線課程 (sikiedu.com)
? 以下為課程筆記:
1. 創建工程
? 選擇藍圖,不帶初學者內容包
2. 創建關卡1


3. 設計關卡1
? 添加初學者內容包,可以使用一些里面的材質,紋理

3.1 地形
-
選擇 Geometry -> Box 更好地設定地形

-
鋪設地板不能直接拖拽該 Actor,不然相應的貼圖也會發生變形,可以使用 Brush Settings 來壓縮地板塊和改變長寬


-
也可以使用 Brush Editing 模式來編輯地形

將該物體長度拖到 2000 ,調回放置模式,按 alt 快捷復制三個一樣的板塊,中間間隔 1000

-
堆砌墻面

在 Brush Editing 模式下拉長墻面

在放置模式下復制墻面:

-
給添加的 Actor 按 F2 進行重命名

添加檔案夾進行規整:

-
設計獨木橋
使用 Edit 和 Extrude,使用 Edit 來使板子傾斜,利用 Extrude 可以增加一些拐角和軸,使用時點擊 Actor 的面


選擇模式下復制做好的獨木橋,并將其旋轉后拖入第二個空隙

-
給城墻添加材質

1)選中想要添加的材質,點擊左箭頭符號直接運用

2)點擊 Surface Materials 里的下拉框搜索相關材質,然后運用

點擊 Select All Ajacent Surfaces 將選中材質附加到當前 Actor 的所有面


運用后發現磚塊材質過細,選中該 Actor 的所有面,將縮放調為 8 倍,點擊 Apply


使用相同的方法為另一邊城墻附加材質

-
為三塊地板添加材質


-
為橋附加材質

3.2 燈光
-
關閉游戲的自動曝光:Settings -> Projevt Settings -> Rendering -> Default Settings -> Auto EXposure


-
添置平行光,除錯亮度,放置到中間,使用動靜結合的方式,Build -> Build Lighting Only


-
添置天空光照

-
添置聚光燈


-
規整結構

3.3 火炬
-
制作火炬的椎體:


-
添置火焰:初學者內容包 StarterContent -> Particles -> P_Fire
1)通過三視圖調整火焰的位置



2)調整火焰的角度

-
為火焰添加墻壁的反射光
1)調整引數

2)調整點光源位置使與火焰同一位置
-
直接拷貝位置

-
手動調整位置

-
-
將創建的火炬轉換為靜態網格

-
將子物體附著到火炬下

-
將火炬及子物體轉換為藍圖類:
選中所有需要轉換的物體,點擊 Blueprints -> Convert Selection to Blueprint Class...



-
轉換為藍圖類后,該火炬可以很方便的整體調節引數,也可以單獨調整一個

-
快速復制擺放六個火炬:


-
修改藍圖類組件的名字

3.4 可收集物
3.4.1 創建可收集物的藍圖類
-
Add/Import -> Blueprint Class 創建藍圖類

-
選擇 Actor 作為父類

-
添加組件:Satic Mesh

-
選擇靜態網格的形狀

-
按住 Ctrl + w 復制網格體出來

-
將下半部分的靜態網格進行翻轉

-
為了使寶石的兩邊變成一個整體,可以將寶石的下半部分變為上半部分的子物體

-
修改寶石的縮放

-
將水晶上下部分的碰撞設定為 NoCollision,防止后面水晶飛向玩家時將玩家擊飛

3.4.2 給可收集物建立發光材質并添加水晶光照
-
創建材質:右鍵 -> Material

-
在材質編輯器里新建結點的四種方法:
1)隨機右鍵一個區域,輸入想要創建的結點,進行連線

2)從 M_Crystal 里直接拖拽出來一根線

3)從 Palette 目錄里拽出一個結點

4)在某些結點邊上會寫上快捷鍵,如:按住 3,滑鼠左鍵點擊一下就會創建一個結點
注意:按 alt 再左鍵點擊一條線可以斷開該線
-
選擇材質的顏色

-
對顏色進行增強:在顏色結點拉出另一條線搜索 Multiply 函式,修改 B 的值為 5
點擊 Apply,點擊 Save


-
修改水晶的材質為設定好的材質

-
添加水晶的光照
1)在水晶藍圖類內部添加點光源的組件

2)設定點光源的引數

-
為水晶藍圖類添加旋轉組件:Rotationg Movement

設定旋轉速度:

3.4.3 使水晶可以被玩家收集
-
為 BP_Crystal 添加一個球形碰撞

-
將添加的球形碰撞(即觸發器)移動到根物體:

-
修改球形碰撞的 Sphere Radius,使其完整包裹住水晶

-
添加簡單的事件函式(此時可以簡單控制玩家靠近水晶即銷毀):只有當玩家靠近水晶才會被銷毀

3.4.5 添加水晶飛向玩家的影片
插值函式 Lerp:Alpha的數值范圍是0到1,

if(Alpha==0) ReturnValue=https://www.cnblogs.com/XiuzhuKirakira/archive/2023/04/13/A
if(Alpha==1) ReturnValue=B
如果Alpha在0到1之間,Alpha值越接近0則ReValue的值越接近A,Alpha值越接近1則ReValue的值越接近B
-
添加 Lerp 插值函式,通過 Alpha 的值來決定回傳值

-
添加 SetActorLocation 函式來設定水晶的位置

-
添加時間軸

-
雙擊時間軸設定屬性:
由于需要通過時間軸的回傳值來設定 Alpha,所以選擇浮點值:

水晶飛過來的值設定為 0.75

-
按住 shift 在淺色區點出兩個點,設定第一個點的時間為 0 ,回傳 0,第二個點的時間為 0.75,回傳 1

點擊全視窗展示

也可以右鍵使該直線變為曲線:

-
設定好時間軸之后開始連線:設定時間軸讓 Alpha 的值隨著時間改變,B 的位置即為 玩家的位置,A 的位置則為水晶最開始的位置,當 Alpha 最開始為 0,水晶位置不變,當 Alpha 緩慢變到 1,水晶的位置慢慢移到玩家所在的位置,最后再銷毀水晶

-
獲得水晶最開始的位置:
添加 GetActorLocation 函式,該函式實時獲得水晶的位置,由于水晶一直在移動,所以水晶最開始的位置需要用一個變數暫存:
-
右鍵 Return Value,選擇 Promote to Variable 創建一個變數


-
連線,使運行時間軸之前保存水晶的位置:

-
最后將保存的水晶的最初位置輸入 Lerp 插值函式的 A 處

這樣看起來線太復雜,也可以直接獲取變數值再連接,獲取變數的值的方法如下:
-
將左側的變數直接拖出到 A 處可以自動連上

-
將變數拖到空白位置,選擇 Get,手動連線

-
按住 alt 鍵,拖出變數直接是 Set
-
按住 ctrl 鍵,拖出變數直接是 Get
-

-
-
最后進行測驗,將 BP_Crystal 的 Trigger 的范圍擴大(使影片效果更明顯),然后放置一些道具水晶

3.4.6 制作水晶被收集時大小和亮度的變化
大小變化
-
添加 Lerp 插值函式,通過 Alpha 的值來決定回傳值
-
添加 Set Actor Scale 3D 函式來設定水晶的大小

-
B 端直接為 0,A 端可能還需要暫存一下:

-
新添加一條時間軸

-
為了營造忽閃忽閃的感覺,可以在時間軸上多點幾個點,設定起伏,最后選中所有的點平滑一下曲線

-
進行連線

亮度變化
-
暫存亮度:

-
添加時間軸

-
連線:

3.5 添加主角——鋼球
3.5.1 創建藍圖類
-
創建藍圖類,選擇父類為 Pawn

-
添加靜態網格組件,指定為球體


-
設定鋼球的材質

-
如何將藍圖視口中的導航小球去掉:將 Player 拖到 DefaultSceneRoot 處

-
為鋼球添加相機跟隨:
1)添加組件:SpringArm,即類似于相機桿,將其移動到球體中心

設定
2)添加組件:Camera,一般添加后會自動吸附到 SpringArm 上,如果沒有吸附的話,可以調整坐標都為 0,即之后會自動調整

3)調整視角

4)調整攝像機距離鋼球的長度

5)設定 Spring Arm 相對于世界 60 度,而不是相對于小球 60 度,防止之后視角隨小球滾動而滾動

6)關閉相機的碰撞:

3.5.2 使 Player Controller 持有本地 Player
-
在 Play 模式下如何退出?
1)按 esc
2)按 shift+F1 跳出 ViewPoint 的控制,點擊 Possess or Eject Player 回到可以編輯的模式

-
如何使 Player Controller 持有本地 Player
1)直接將 Auto Possess Player 設定為 Player 0 (不推薦這種方式)

2)利用 Player Start 設定玩家起始位置,然后在游戲運行時虛幻引擎會在 Player Start 的位置自動生成一個指定的 Pawn,然后讓 Player Controller 去持有 Player
-
放置一個 Player Start,手動調整使其貼地,也可以放在空中,然后按下 fn+end

-
自定義 GameMode:創建一個藍圖類,設定父類為 Game Mode Base

將 Default Pawn Class 設定為 BP_Player

-
Project Settings -> Maps & Modes ->Deafault GameMode 設定為自己的 BP_GameMode

-
3.5.3 按鍵映射與輸入控制
控制玩家移動:設定 BP_Player 的事件
1)將默認的三個事件全部洗掉
2)兩種接收鍵盤輸入的方式:
-
右鍵點擊輸入搜索結點:

系結按下的函式:

這樣的弊端:按下 w 只呼叫一次函式,并不會一直執行,而是按一次顯示一次,所以這種方法不推薦
-
Project Settings -> Input -> Axis Mapping -> +

添加鍵盤映射:

在藍圖內添加軸映射的結點

3.5.4 使小球轉動起來
-
使小球有一個物理性質

-
獲得小球的資料體:將 Components 中的 Player 拖出來,選擇 Get Player


-
給小球添加力矩

右鍵 Torque 選擇 Split Struct Pin 將 x y z 值分開

-
施加 y 方向的力矩,注意勾選 Accel Change 忽略小球本身的質量,否則加強系數需要設定得非常大

-
施加 x 方向的力矩

-
給小球施加摩擦力

3.5.5 設計失敗觸發器
-
創建藍圖類

-
添加碰撞盒子組件

-
將碰撞盒子放置在關卡中間,調整縮放


-
在 BP_FailTrigger 內添加 ActorBeginOverlap 事件

-
添加小球失敗的邏輯:當小球掉下接觸到碰撞盒子,獲得當前關卡的名字,重新打開一次當前關卡

-
添加一些容錯判斷:只有當掉落物體為 Player 的時候才能出發重新打開關卡
注意:按住 B + 滑鼠左鍵點擊一下就可以放置一個分支


3.5.6 給小球失敗添加一個淡入淡出的效果
當小球掉落時,添加一個從 0-1 的漸變程序
-
在 BP_FailTrigger 添加相機的淡入淡出功能,設定保持黑暗 1 秒,注意必須設定 Delay 才會延時

當游戲開始時,添加一個從 1-0 的漸變程序
-
在 BP_Player 中添加 BeginPlay 事件,添加攝像機的淡入淡出函式

3.5.7 按 ESC 游戲退出

3.6 可發射的子彈
3.6.1 創建
-
創建子彈的藍圖類

-
添加組件:

-
設定網格體的形態和材質

-
添加 Projectile 組件

-
設定 Projectile 的引數:投擲速度和重力影響

3.6.2 添加粒子效果
-
添加粒子組件

-
設定粒子效果:

-
縮小子彈使粒子效果更明顯:

-
雙擊 P_Sparks 進入粒子系統修改粒子效果:
通過勾選或直接右鍵 Emitter->Delte Emitter 將電火花洗掉


3.6.3 子彈擊中其他物體時的操作
-
添加球形碰撞,使用球形碰撞代替根部的小球

-
調整球形碰撞的范圍

-
調整球形碰撞的 Collision Presets 為 BlockAll

-
添加子彈擊中事件

3.6.4 創建炮臺和炮管
-
直接匯入炮臺和炮管的模型:
選擇不創建材質

-
同時選中炮臺和炮管放置到關卡中:

-
將炮管設定為可移動的

-
將炮管依附在炮臺底下:

-
創建藍圖類:


-
設定炮臺和炮管的材質:


-
控制內容瀏覽器中預覽圖的大小:按住 ctrl + 滑鼠滾動
-
編輯預覽圖中的物體:View Options -> 勾選 Thumbnail Edit Mode,然后像操作視口一樣操作預覽圖中的物體

3.6.5 使炮臺生成可回圈發射的子彈
-
添加 Arrow 組件:
箭頭的基部作為炮彈生成的地方,箭頭的方向即為炮彈發射的方向


-
添加 SpawnActor BP Projectile 函式,選擇 BP_Projectile 作為藍圖類

-
連線,使回圈發射子彈
雙擊連線可以重定位結點

3.6.6 創建開火影片
-
創建時間軸設定炮管在 Y 軸的位置


-
連線:
注意:
- 影片從開始播放:Play from Start
- 播放完成后再發射子彈
問題:延時 1 秒 + 影片 0.3 秒時間變長了

3.6.7 時間軸的事件軌道與開火特效
達成效果:先生成子彈再播放影片
-
重新連線

達成效果:解決延時 1 秒 + 影片 0.3 秒時間變長了的問題
-
添加 Event Track

-
使時間軸剛開始時生成一個執行的針腳,用來后續的連線

-
重新連線,此時會在影片剛開始播放時就進入發射子彈的邏輯,就不用包含影片播放的 0.3 秒

開火特效
-
添加 Particle System

-
復制炮彈生成的位置并粘貼

-
指定爆炸效果:

-
對爆炸效果進行縮放

-
關閉自動激發

-
連線:

3.6.8 子彈擊中小球造成傷害
-
給 BP_Projectile 添加傷害函式:

-
將 BP_FailTrigger 中的淡入淡出效果拷貝粘貼過來,給 BP_Player 添加傷害事件,即當小球被打到之后重新開始關卡


4. 藍圖整理
4.1 子圖與函式
4.1.1 子圖
? 將相同操作收縮為一個結點,相當于創建了一個檔案夾放入這些類似操作
-
選中類似的操作:

-
右鍵選擇 Collapse Nodes


注意:該方法不能實作代碼復用,不常用
4.1.2 函式
-
選中類似的操作:

-
右鍵選擇 Collapse to Function


-
繼續收縮


-
繼續收縮


-
繼續收縮


4.2 宏與宏庫
4.2.1 宏
函式缺點:具有多個執行流輸出的不適合收縮為函式

-
選中類似操作收縮為宏:

-
在此處可以調整宏里面結點針腳的順序和名稱

-
為輸出流增加執行針腳:


-
收縮后如下所示:

4.2.2 藍圖宏庫
藍圖宏庫(Blueprint Macro Library) 是一個容器,它包含一組 宏 或自包含的圖表,這些圖表可以 作為節點放置在其他藍圖中,它們可以節省時間,因為它們可以存盤常用的節點序列, 包括執行和資料傳輸所需的輸入和輸出,
? 宏在參考它們的所有圖表之間共享,但是它們會自動擴展到圖表中, 就像它們在編譯期間是一個折疊節點那樣,這意味著藍圖宏庫不需要編譯,但是, 對宏的更改僅反映在重新編譯包含這些圖表的藍圖時 參考該宏的圖表中,
藍圖宏庫
-
創建藍圖宏庫:
1)創建檔案夾:Library

2)添加藍圖宏庫


-
將剛才創建的宏中的結點賦值拷貝過來(除了輸入輸出結點都要復制)

-
連線,設定輸入輸出結點

-
使用方法:可以直接搜索該宏

4.2.3 藍圖宏庫的使用
-
將重入關卡的結點拷貝到藍圖宏庫中保存為新的宏

-
將所有涉及重入關卡的地方使用該宏替換

-
將攝像頭淡入的操作封裝為宏

-
進行替換


-
使手動可以設定 Duration 的值

4.3 暴露藍圖變數
-
將專案中意義不明或者模糊處替換為變數,取一個合適的變數名

-
暴露變數


將 Default 的標簽改掉:


-
指定變數的下限

-
繼續設定變數


4.4 藍圖注釋
-
選中想要添加注釋的部分

-
按 C 鍵

4.5 藍圖函式的純凈與非純凈
純凈函式:綠色結點,不改變游戲的狀態,如:單純的計算某個東西的值

非純凈函式:藍色結點,改變游戲的狀態

-
收縮純凈函式:



-
將宏改造為純凈宏:
將投射改為純凈投射:

洗掉輸入和輸出結點的執行線:

全域查找使用該宏的地方,修改連線
5. 追光燈
5.1 創建追光燈
-
創建藍圖類:BP_SpotlightFollow
-
添加碰撞盒子組件

-
在橋的水晶處添加追光燈,設定碰撞盒子的大小


-
調整 SpotLight 的引數

-
將本實體的變動覆寫到藍圖類中

5.2 使追光燈持續照亮主角
Interp To 函式:插值,在兩個數之間補充一些數,讓過渡變得更自然
常見的插值函式:

-
FInterp To、FInterp To Constant:浮點數(Float)插值,F:Float,浮點數
-
RInterp To、RInterp To Constant:角度(Rotation)插值,
RInterp To | Unreal Engine Documentation

輸入引數:
引數 值 CurrentRotator Actual rotation TargetRotator Target rotation Delta TimeFloat Time since last tick Interp SpeedFloat Interpolation speed, if the speed given is 0, then jump to the target.
InterpSpeed = 1 / Time = 2 Time = 0.5輸出值:
值 Return ValueRotator New interpolated position -
Vector To、Vector To Constant:向量插值
? 帶有 “Constant” 的,表示勻速插值(線性插值);沒帶有 Constant 的,表示緩沖插值(非線性插值),到達終點值的時候放慢,有一個更平滑的緩沖,給人的感覺更柔和一些,
Find Look at Rotation:找到目標物件相對于當前物件的旋轉角度
-
記錄玩家的觸發狀態:

-
每幀設定聚光燈的朝向

-
獲得聚光燈朝向的目標旋轉角度:

-
整體結點連接如下:

6. 過關區域
6.1 創建過關區域
-
在編輯模式下選中地板的側面,往后縮 500


-
利用擠出功能拉回原來的長度

-
將拉出的面抬高做成一個臺子
材質賦值:
-
添加一個管道

-
調整管道靠在臺子上

-
選擇所有面附加材質

-
調整天光和平行光

6.2 設計勝利觸發器
UE4 中GameInstance、GameMode、GameState、PlayerState和PlayerController的關系:
| 名稱 | 生命周期 | 存在的位置(服務器或客戶端) | 服務端和客戶端是否能同步 | 使用方式 |
|---|---|---|---|---|
| GameInstance | 引擎啟動時創建,引擎關閉后銷毀或更換 | 都存在 | 不能,服務器和客戶端時獨立的,彼此不通信 | 在多關卡中來回切換,需要一個公共的變數來進行記錄所需要的資料,進行資料互動,GameInstance類就充當這個全域類來記錄全域資料, 可以用來保存特定型別的持久資料,如用戶賬戶資訊 |
| GameMode | 關卡加載時生成,銷毀時一起銷毀 | 僅在服務器 | 無此說法 | 存盤客戶端不需要明確知道的游戲資訊,如出現的玩家和觀眾數量,以及允許的玩家和觀眾最大數量, 玩家進入游戲的方式,可包含選擇生成地點和其他生成/重生成行為的規則, 游戲是否可以暫停,以及如何處理游戲暫停, 游戲是否可以暫停,以及如何處理游戲暫停, 關卡之間的過渡,包括游戲是否以影片模式開場, |
| GameState | 關卡加載時生成,銷毀時一起銷毀 | 都存在 | 可以,服務器可以在GameState上使用復制變數讓所有客戶端保持最新的游戲資料 | 與所有玩家和旁觀者有關、而不是與任何一個特定玩家有關的資訊,如 游戲已運行的時間(包括本地玩家加入前的運行時間), 每個個體玩家加入游戲的時間和玩家的當前狀態, |
| PlayerState | 關卡加載時生成,銷毀時一起銷毀 | 都存在 | 可以,服務器可以在GameState上使用復制變數讓所有客戶端保持最新的游戲資料 | 與一個特定玩家有關的資訊,如玩家的分數 |
| PlayerController | 關卡加載時生成,銷毀時一起銷毀 | 服務器上每個玩家都有PlayerController,但本地客戶端只有本地玩家的PlayerController | 客戶端和服務器之間傳達資訊,而不必將該資訊復制到其他客戶端 |
-
創建藍圖類 BP_Wintrigger
-
添加碰撞盒子

-
將該藍圖類的實體拖入場景中,縮放其大小

6.3 儲存水晶總數
-
創建 BP_GameInstance ,可以儲存一些全域變數

-
獲得 BP_GameInstance
獲得 GameInstance (父類),將其投射為 BP_GameInstance

將此操作封裝為宏:

-
保存水晶總數:

6.4 設計水晶自增并撰寫勝利條件
-
水晶自增函式:

-
添加水晶自增的邏輯:當水晶被玩家觸碰時,實作影片效果后使水晶數量+1,之后被銷毀

-
撰寫勝利條件:

-
Project Settings -> Maps & Modes -> Game Instance -> BP_GameInstance

7. 用戶界面(UI)
7.1 創建 UI
-
創建 UI:User Interface -> Widget Blueprint

-
設計 UI 界面:

-
在 BP_Player 中創建并顯示界面

7.2 顯示關卡名和水晶
-
當 UI 被創建后,獲得當前的關卡名,保存在變數中

-
系結變數

-
新建系結函式:


-
獲得收集的水晶和總的水晶數量
注意:在 UI 函式中不能呼叫宏庫中的宏

可以將其封裝為本地的宏:

7.3 顯示所用時間與跨關卡計時
-
在 BP_GameInstance 中添加變數:GameTime

-
在進入關卡繪制 UI 界面后,獲得全域的累加游戲時間,將累加的游戲時間作為顯示的 LevelTime

-
累加加上每幀的時間

-
為 UI 中的顯示時間創建系結的函式,將 LevelTime 從浮點型轉換為 TEXT 型顯示出來

-
在 BP_WinTrigger 中獲取 UI 中計算的時間值,將總的時間值賦給 BP_GameInstance.GameTime

將此段邏輯收縮為函式:


7.4 游戲勝利后的處理
7.4.1 添加獲勝后的提示
-
在 BP_UI 中拖入勝利提示框,將 Visibility 處選為 Hidden 即可在游戲運行中隱藏該字樣

-
在 BP_GameInstance 中添加變數 IsWin 記錄游戲狀態

-
在 BP_Wintrigger 中設定游戲獲勝狀態

-
在 BP_UI 中為 "You Win!" 創建系結函式

7.4.2 獲勝后停止計時并取消對小球的控制
-
在 BP_UI 中撰寫邏輯:游戲獲勝時停止游戲計時,并取消玩家的物理效果

-
在 BP_Player 中添加邏輯,玩家獲勝后將不能再進行移動

7.5 顯示未收集完時的 UI 閃動效果
-
在 BP_UI 中繪制文字框

-
設定 Visibility

-
添加影片

-
添加軌道

-
添加操作


-
拖動右側的滑動條設定每隔 0.25 秒變換一次 Visibility

-
在 BP_UI 中創建函式播放影片

-
在 WinTrigger 中呼叫該函式

-
在關卡剛開始時,重置每個關卡的手機水晶數

8. 創建關卡 2 并進行設計
8.1 創建與設計
-
若要在關卡 1 的基礎上進行改動,選擇 File -> Save Current As...

-
保存即可

-
設計關卡 2

8.2 關卡藍圖
關卡藍圖:每個關卡有且僅有一個
-
打開關卡藍圖

-
改變關卡 2 的相機視角:
1)在 BP_Player 中添加一個函式 AdjustCamera

2)在關卡 2 的藍圖中呼叫 BP_Player.AdjustCamera 調整懸臂的長度

3)調整后視角如下

8.3 關卡切換
-
在勝利觸發器中創建變數 LevelNames 儲存

-
陣列賦值:注意編譯后才能進行賦值

-
獲取當前關卡的索引并與最后一個關卡的索引進行比較:

收縮為純函式:

收縮為純函式之后沒有多余針腳,所以需要進行設定:

將其中用來查找當前關卡索引的邏輯收縮為函式:



將 GetLevelIndex 設為純函式:

-
撰寫邏輯:加載下一個關卡

如果不是最后一關,則自動加載下一個關卡

9. 游戲音效
-
創建檔案夾:

-
將音頻檔案匯入

-
按 Ctrl + Shift + s 或者點擊 Save All 保存

-
設定背景音樂:
1)直接雙擊點開 Cave1 和 Cave2 進行設定:勾選 Looping 回圈播放

2)在關卡藍圖中設定播放背景音樂:


-
音效設定:創建 Cue

1)創建聲音衰減模板

2)使 Collection_Cue 和 Fire_Cue 使用剛剛創建的聲音衰減模板
3)設定聲音衰減模板

-
設定播放聲音:
1)水晶:粒子特效

2)加農炮:開火

10. 游戲發布
-
File -> Package Project

-
發布的配置:
- Development :開發者模式發布
- Shipping:直接發布

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550017.html
標籤:其他
上一篇:三分鐘完成靜態網站托管
