tft每日頭條

 > 科技

 > ue4的藍圖編程介紹

ue4的藍圖編程介紹

科技 更新时间:2024-12-24 00:48:23

  虛幻中的C ! 本文主要介紹如何在虛幻引擎4(UE4)中編寫c 代碼。虛幻引擎中的C 編程十分有趣,入門也很簡單!通常人們會認為虛幻C 是輔助C ,因為虛幻有很多功能可以讓所有人都能更簡單地使用C 。

  在開始之前,你必須已經對C 或另一種編程語言有所認知,我假設你已經有了一些C 經驗,但如果您了解C#、Java或JavaScrip,也會發現有許多相似之處。

  如果你完全沒有編程經驗,那就一目十行、囫囵吞棗的看過去就行了,做到不求甚解就ok。

  在UE4中,你可以編寫标準C 代碼,接下來我們将詳細介紹。

  C 與藍圖 UE4提供了兩種創建新Gameplay元素的方法:C 和藍圖視覺腳本。程序員利用C 即可添加基礎Gameplay系統,然後設計師可基于這些系統進行構建或利用這些系統為某個特定關卡或遊戲本身創建自定義Gameplay。在這些情況下,C 程序員在文本編輯器(如Notepad )或IDE(通常是Microsoft Visual Studio或Apple Xcode)中工作,設計師則在UE4的藍圖編輯器中工作。

  Gameplay API和框架類在這兩個系統中都可以使用,可以單獨使用,但組合使用,互補長短才能發揮出它們真正的作用。那麼到底有何意義呢?這意味着,當程序員使用C 來創建Gameplay構建塊,設計師利用這些塊創建有趣的Gameplay時,引擎就能發揮最大作用。

  言至于此,我們來看看C 程序員為設計師創建構建塊的典型工作流程。在此情況下,我将創建一個類,稍後設計師或程序員可以通過藍圖擴展此類。在該類中,我将創建一些設計師可以設置的屬性,并且我将根據這些屬性派生新值。整個過程使用我們提供的工具和C 宏就可以完成,非常簡單。

  類向導 首先,使用編輯器中的添加c 類來生成稍後将通過藍圖擴展的基本C 類。下圖顯示了向導的第一步,即創建新Actor。

  ue4的藍圖編程介紹(UE4中的C編程簡介)(1)

  選擇基類

  ​

  該流程中的第二步是告訴向導,您已經生成的類的名稱。這是使用默認名稱的第二步。

  ue4的藍圖編程介紹(UE4中的C編程簡介)(2)

  設置類名

  ​

  選擇創建類後,向導會生成文件,并打開你的開發環境,便于你開始編輯,下面是為生成的類定義。

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(3)

  頭文件

  ​

  類向導會生成你的類,并提供 BeginPlay 和 Tick 兩個重載方法。BeginPlay 事件告訴你Actor以可運行狀态進入了遊戲。這是啟動類Gameplay邏輯的好位置。Tick 每幀調用一次,使用自上次調用傳遞以來經過的時間。你可以在這裡執行任何重複邏輯。但是,如果你不需要該功能,最好将其移除,這樣對性能有益。如果将其移除,确保移除構造函數中指示應開始發生tick事件的相應性。下面的構造函數就包含所提及的行。

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(4)

  源文件

  ​

  讓屬性出現在編輯器中 創建類後,現在讓我們創建一些設計師可以在虛幻編輯器中設置的屬性。将屬性公開給編輯器非常簡單,隻需要使用說明符 UPROPERTY 即可實現。你隻需在屬性聲明的上一行加入 UPROPERTY(EditAnywhere) 即可,如以下類中所示。

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(5)

  将屬性公開給編輯器

  ​

  隻要完成上述操作,即可在編輯器中編輯該值。還有更多方法可以控制編輯該值的方式和位置。方法是将更多信息傳遞到 UPROPERTY 說明符。例如,如果你想要m_totalDamage屬性出現在包含相關屬性的某個部分中,可以使用分類功能。具體請參見下面的屬性聲明

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(6)

  屬性分類

  ​

  當用戶想要編輯該屬性時,它現在會出現在傷害(Damage)标題下面,與你已經标記為此類别名稱的任何其他屬性在一起。這是将常用設置放在一起以供設計師編輯的好方法。

  現在,讓我們将同一個屬性公開給藍圖。

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(7)

  可讀可寫标示

  ​

  如你所見,有一個說明符可以讓屬性在藍圖圖表中可供讀寫。有一個單獨的說明符 BlueprintReadOnly,如果你希望屬性在藍圖中被視為 常量,可以使用這個選項。

  再繼續以下部分前,我們來向該樣本類添加幾個屬性。已經有一個屬性可以控制該Actor将釋放出的總傷害量,但讓我們更進一步,讓這個傷害随着時間而逐漸釋放出來。下面的代碼添加了一個可以由設計師設置的屬性,以及一個對設計師可見但不能更改的屬性。

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(8)

  隻讀标示

  ​

  m_damageTimeInSeconds 是設計師可以修改的屬性。m_damagePerSecond 屬性的值使用設計師的設置計算得出(請參見下一節)。VisibleAnywhere 說明符将該屬性标記為可見,但不可編輯。Transient 說明符意味着,它不會保存或從磁盤加載;它就是一個派生的非持久值,所以沒有必要存儲它。下圖顯示作為類默認值一部分的屬性。

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(9)

  界面屬性

  ​

  為了按實例支持設計師設置屬性,還會從給定對象的實例數據加載值。該數據在構造函數之後應用。你可以根據設計師設置值創建默認值,方法是鈎入 PostInitProperties() 調用鍊中。下面示例展示了 m_totalDamage 和 m_damageTimeInSeconds 為設計師指定值的流程。盡管它們是設計師指定的,但你仍可以為它們提供合理的默認值,就像下述示例一樣

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(10)

  設計師指定值之後回調方法

  ​

  這裡是添加了上述 PostInitProperties() 代碼後的屬性視圖。

  ​

  ue4的藍圖編程介紹(UE4中的C編程簡介)(11)

  效果圖

  ​

  到目前為止,我們已經了解了c 對象初始化以及每一幀的接口,還有成員變量如何公開到虛幻編輯器,通過以上學習可以說已經成功入門虛幻c 了,加油!

  ,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved