想要快速上手,首先需要获取Object对象
在开始Python之旅的最初阶段,最大的困扰通常是如何开始。
- 如何在获得编辑器里的Actor?
- 如何获得目录中的某个资源?
- 我要如何才能在命令行中查看某个物体的属性?
要解决这些问题的第一步都是如何在Python中获得虚幻引擎中的对象
从预置菜单获取对象¶
在TAPython的预置菜单中,有下面三个菜单项能够方面用户快速获得对象。选中相应的物体Component,Actor或者资源之后,点击对应的菜单。对应的组件,Actor或者资源会被赋值给全局变量_r
。
然后在Python的命令行中,我们就可以对其进行各种想要的操作:
TIP
Python(REPL)模式最适合熟悉对象和接口。可以少打很多print
Python(REPL)
_r
dir(_r)
_r.get_name()
从代码中获得¶
Get Selected Actor¶
在UE4中:
UE4
actors = unreal.EditorLevelLibrary.get_selected_level_actors()
UE5中,由于引入了各个SubSystem,EditorLevelLibrary
中的方法已经逐步被SubSystem中的方法所代替
UE5
actors = unreal.get_editor_subsystem(unreal.EditorActorSubsystem).get_selected_level_actors()
TIP
在各个SubSystem中,我们需要先通过get_editor_subsystem
获得Subsystem的实例,然后再执行它的方法。
很多情况下,我们不应该被各办法之间的差异所困扰,因此,可以封装其中的变化,直接调用自己的函数
TAPython
import Utilities
actors = Utilities.Utils.get_selected_actors()
Get Selected Component¶
可以直接调用TAPyton 的PythonBPLib提供的方法
components = unreal.PythonBPLib.get_selected_components()
或者
import Utilities
components = Utilities.Utils.get_selected_components()
TIP
如果想要给选中的Actor添加一个Component,可以用added_mesh_comp = unreal.PythonBPLib.add_component(unreal.StaticMeshComponent, target_actor, target_actor.root_component)
Get Selected Asset¶
Assets 也是类似,可以直接调用EditorUtilityLibrary
中的方法
assets = unreal.EditorUtilityLibrary.get_selected_assets()
或者调用自己的封装的方法
import Utilities
assets = Utilities.Utils.get_selected_assets()
Get Material Node¶
对于一些复杂的节点,比如材质中的节点,我们也可以将其取出,赋值给变量"_r",然后在目录行中做实验,也可以将它放入Object Detail viewer。
更多关于材质节点相关的操作,可以参考这篇:manipulate Material
Next Step¶
在获取对象之后,我们就可以在编辑器使用dir
,help
等命令和Python的inspect
模块来熟悉和查看这些unreal对象。
比如在002_tool_04_object_detail这个TAPython built-in的工具中,就将对象的各个接口属性和对应的结果都显示在了界面上,方便查看
小结¶
参考¶
003_t_05_most_used_editor_api 003_t_01_learning_ue_with_python