python对大家来说是非常熟悉的一门编程语言,那么在工作中肯定要使用他啊,为什么呢?
1.操作步骤脚本化,不易出错。
2.易于修改,尤其是还在开发阶段,当然开发完毕之后可以翻译为C++代码即可,快速开发
其他就不在这里赘述啦。
一、获取UE4中的Asset
在ue4中,在ContentBrowser中的东西叫做Asset,在OutLiner中的物体叫做Actor,这点大家不要搞混。 如下图:(ContentBrowser)
获取Asset的代码:
actor_class = unreal.EditorAssetLibrary.load_blueprint_class("/Game/BpActor")
# 该种方法为加载蓝图类的方法,且只能在\Game下的蓝图类,因为他不能Convert 不是以\Game为前缀的路径
world = unreal.EditorLevelLibrary.get_editor_world()
actor_object = unreal.load_object(world,'/Script/VCamCore.VCamComponent')
# 此方法适用于不是以\Game为前缀的路径的Asset
二、获取UE4 Level中的Actor
UE4的pythonAPI同样提供了一个方法
unreal.GameplayStatics.get_all_actors_of_class(world, actor_calss)
这就和上面获得ContentBrowser中Asset呼应上了,因为get_all_actors_of_class需要传进来一个类,所以我们就用上面获得到的类来获取level中所有的实例Actor,这也就和蓝图中的节点相同
因为python API和蓝图API暴露的差不多,但是pythonAPI应该是要比蓝图多一点点的
函数返回的是一个Actor列表。
这样就拿到的了场景中的Actor,接下来我们就可以设置属性啦
actors = unreal.GameplayStatics.get_all_actors_of_class(world, actor_class)
actor_tags = actors[0].get_editor_property('tags')
这个时候我们就可以查询官方文档啦,查看Actor到底有什么方法,该传进去什么样的参数
三、获取Actor中的组件
在我们的实际使用过程中,肯定是多个组件拼装成为一个Actor的,所以下一步就是获取Actor中的组件,参考蓝图节点
首先获取Component的类,参考 :一、获取UE4中的Asset
# 获取class类
actor_object = unreal.load_object(world,'/Script/VCamCore.VCamComponent')
# 根据之前获取的Actor来查询传入的Class,这样就获取了组件
vcam = actors[0].get_components_by_class(actor_object)
接下来就可以对这个组件进行控制啦。
vcam[0].enabled = True