最近在做一些unreal的开发,语言上使用的是python(对于我自己能力而言,使用python效率会快一些,C++只会个基础)。
但众所周知,unreal的python文档比较难阅读,很多命令和方法都得靠猜和尝试。
刚开始做unreal开发的时,要实现一些功能都得从搜索引擎去获得一些代码参考。无法直接从帮助文档中找到想要的结果。不过到后来熟悉了unreal的“套路”,也总结了一些开发经验和心得,在这里分享给大家。
(篇幅较长,可以点击阅读原文在pc端进行浏览)
unreal版本是4.26,有些模块需要开启SequencerScripting和EditorScriptingUtilities插件。
maya到unreal概念转换熟悉unreal的朋友可以跳过,这里为了给maya初入unreal的开发者传达几个概念。
首先是Level(关卡),这里可以把一个Level看作是一个maya文件。打开一个Level,在右侧的WorldOutliner就是这个“maya”文件的大纲视图。里面的所有物体,都被称作为Actor。
ContentBrowser相当于整个项目的资产库,里面的物体类型被称作为Asset。
关于Actor获取大纲视图选择的Actorcmds.ls(sl=True)应该是maya开发者很常用的命令。我们在开发一个工具时,要对物体进行操作,首先要获取物体对象。
在unreal里这样来获取:
importunrealdefget_selected_actors():returnunreal.EditorLevelLibrary.get_selected_level_actors()
返回一个列表,里面是Actor类对象。
Actor对象属性修改这里用一个摄像机来举例,修改它的Filmback和FocusMethod属性:
首先要获取到这个cameraactor对象,用上面讲的方法:
cam=get_selected_actors()[0]
打印一下它,可以看到它是一个CineCameraActor对象,然后去文档看看有没有setAttr之类的方法,结果一个"set"打头的都没有。
观察摄像机的属性栏(Details),可以看到有类似于maya里Transform和Shape节点的关系:SceneComponent下有个CameraComponent,而我们想要修改的Filmback和FocusMethod属性是属于CameraComponent的。
那怎么获取到这个"Shape"呢?帮助文档里刚好有这个方法。
3.png