Unreal Python API 从零到入门
目錄
- 前言
- Unreal Python API的使用 - 運行環境
- UE4 Python插件
- 安裝UE4 Python腳本插件
- 運行腳本
- 打開output log
- 輸入運行路徑
- 編寫腳本
- 在編寫Python腳本中你應當謹慎注意的事情
- 授人與漁
- 再次跳入坑坑的API文檔
- Google yyds
- 常用接口整理
- unreal.AssetData
- unreal.\_ObjectBase
- unreal.EditorAssetLibrary
- unreal.AssetRegistry
- unreal.GameplayStatics
前言
跨過山和大海。。。
好像也沒有看到有人寫這個文檔
Unreal Python API的使用 - 運行環境
Winodws 10
Unreal Engine 4.23.1
UE4 Python插件
安裝UE4 Python腳本插件
搜索script,安裝圖中標注好的兩個插件
運行腳本
打開output log
輸入運行路徑
將cmd切換為Python,之后再輸入你腳本的路徑
這里我們創建一個test.py文件(如下代碼)放在桌面
路徑為: C:\Users{你的用戶名}\Desktop\test.py
在這里我的用戶名為Bedivere, 所以我們輸入
C:\Users\Bedivere\Desktop\test.py
編寫腳本
在編寫Python腳本中你應當謹慎注意的事情
- UE4自帶的Python版本為2.7,你需要注意語法(比如print后面是不帶括號的
- 直接復制UE4里的文件名可以獲得為文件路徑(但是文件名稱會重復兩次,有一些需要文件路徑的方法在這里需要進行更改)
例如:
你復制的路徑
‘/Game/AssetsXXXX/AAA.AAA’ (注意它打了兩遍!!!
實際它需要
‘/Game/AssetsXXXX/AAA’
但有時他又只需要前者,所以巨**坑 - UE4 outputlog里cmd是只能使用UE4的cmd指令,執行外部的指令是沒有的,例如cd C:\xxxxx
授人與漁
當編寫Python腳本的時候會碰上各種各樣的問題,這里介紹可以去找結果的途徑
就拿我們這個腳本舉例
需求是:找到這個文件的reference
所以我們在官方API文檔里搜索get_reference
在這里我們就能看到api的用法,需要文件路徑,以及配一個查找選項(范圍)
路徑我們直接Ctrl + C就可以解決,但對于后者我們需要再點進去查看如何配置
看到這里我們知道需要配置四個參數,所以我們寫下了這行代碼
但運行后會報錯
提示類型不對,應當為一個類
這里就是他很坑的地方,明明文檔例子給的就是路徑,但這里又說不行
這里我們就有兩種途徑去尋找解決方式
再次跳入坑坑的API文檔
去按你覺得可能的想法搜, 比如get AssetRegistry
或者 path to AssetRegistry。但是這樣挺靠緣分的(x)
英語水平和你對命名的了解程度(√)
我選擇的是return AssetRegistry,看看什么方法能返回給我這樣的一個對象
這里那個Helpers小幫手就很吸引我的眼球!
只需要點一下就可以轉換 Done!
Google yyds
別問,問就是Ctrl+C Ctrl + V
常用接口整理
此處列舉的類都是些基礎類與實用類,類中的方法可用于復現編輯器中的操作或信息的獲取,但由于數量較多無法一一列舉,因此使用前請務必查看該類的官方文檔,查找最適合需求的方法并使用。
unreal.AssetData
使用方式
# 路徑請遵循虛幻路徑格式,文件名需以.隔開后再寫一遍 unreal.AssetData('/Game/test/XXX.XXX')常用方法
- 獲取資源對象 - get_asset()
unreal._ObjectBase
使用方式
# 所有對象類的基類,在獲取到對象后,可以隨意調用該類中的方法常用方法
import unreal object = unreal.AssetData('/Game/test/XXX.XXX').get_asset()# 獲取對象的虛幻類 print object.get_class()# 執行結果輸出 LogPython: <Object '/Script/Engine.StaticMesh' (0x000001639B17C400) Class 'Class'> --------------------------------------------------------------------------------------------------------------- # 獲取對象名稱,即文件名 print object.get_fname()# 執行結果輸出 LogPython: SM_Env_Bridge_006A --------------------------------------------------------------------------------------------------------------- # 獲取對象的絕對路徑 print object.get_path_name()# 執行結果輸出 LogPython: /Game/test/XXX.XXXunreal.EditorAssetLibrary
使用方式
# 實用方法類,類中方法可直接靜態調用,可執行ContentBrowser中的大部分功能,如創建、刪除、復制、保存、重命名、獲取tag信息等。 # 此處只列舉幾個基礎的方法,使用時請查閱此類的官方文檔,以獲取能夠滿足需求的方法。常用方法
import unreal# 刪除asset,需傳入資源路徑作為參數,返回值為bool型,True則操作成功,False為失敗 result = unreal.EditorAssetLibrary.delete_asset('/Game/test/XXX')# 刪除目錄,需傳入目錄的路徑作為參數,返回值為bool型,True則操作成功,False為失敗 result = unreal.EditorAssetLibrary.delete_directory('/Game/test')# 判斷asset是否存在,需傳入資源路徑作為參數,返回值為bool型,True則操作成功,False為失敗 result = unreal.EditorAssetLibrary.does_asset_exist('/Game/test/XXX')# 判斷目錄是否存在,需傳入資源路徑作為參數,返回值為bool型,True則操作成功,False為失敗 result = unreal.EditorAssetLibrary.does_directory_exist('/Game/test')# 獲取資源tag信息,需傳入資源路徑作為參數,返回值為包含tag信息的字典 info = unreal.EditorAssetLibrary.get_tag_values('/Game/test/XXX')unreal.AssetRegistry
使用方式
該類用于獲取asset相關數據,如asset間的關聯與引用、asset查找、asset狀態判定等。 使用此類需要從unreal.AssetRegistryHelpers類中獲取,用法為unreal.AssetRegistryHelpers.get_asset_registry(),返回值類型即為unreal.AssetRegistry。常用方法
- 獲取引用到的資源 - get_dependencies(asset_path, dependency_options)
- 獲取被哪些資源引用 - get_referencers(asset_path, reference_options)
unreal.GameplayStatics
使用方式
gameplay實用方法類,直接靜態調用類中方法即可。常用方法
- 獲取場景中某類的所有actor - get_all_actors_of_class(world_context_object, actor_class)
總結
以上是生活随笔為你收集整理的Unreal Python API 从零到入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器端代理proxy实现跨域访问
- 下一篇: javascript正则表达式验证ema