因为我平时是用蓝图写项目功能的,所以这里提到的是蓝图中的实现方法。
获取蓝图类自身:self
获取蓝图所在物体:
销毁物体:等同于unity中的Destroy(Acor1)
延迟销毁物体:两种方法,等同于unity中的Destroy(Acor1,1f)
通过组件访问Actor:
通过Actor访问组件:
在关卡蓝图中获取某个物体的引用:先在关卡中选中物体TestCube1,然后在关卡蓝图中如下操作
查找物体:
给Actor添加标签: 判断Actor是否包含标签:
显示隐藏Actor:
SetVisibility需要传入布尔参数控制显示或隐藏。ToggleVisibility是开关功能,不断调用会让物体不断地在显示和隐藏之间切换。带Hidden的函数控制能力比带Visibility的函数强一些。分别控制Rendering组件下的2隔变量:
2022.11.15添加
获取Actor位置、角度、缩放:
实例化Actor:类似unity中的Instantiate(prefab),使用Spawn Actor From Class
2022.11.14添加
如果你对某个物体添加了蓝图脚本组件,那么在这个蓝图中你就不能使用GetActorOfClass之类的方法,要使用GetComponentOfClass方法。例如我在演示工程中的第三人称角色ThirdPersonCharecter上添加了MyPlayer蓝图脚本组件,通过下面的方法获取对应蓝图变量。
播放音频:左边播放音频整个场景能听到,右边是在某个位置播放音频
播放视频:有在场景中播放视频和在UI上播放视频两种。
在场景中播放视频
1.在工程文件夹Content中新建一个文件夹命名为Movies,将视频拖入该目录下,会生成一个File Media Source文件,双击查看属性,路径已经设置好了。名字一定要为Movies,这样才能打包成功。
2.创建Media Player,弹出框打钩,会自动生成一个Media Texture,然后在场景中放一个Plane用于播放视频,大小角度稍微调整一下。
点开这个Media Player有三个选项需要注意一下,分别是Play on Open(自动播放)、Shuffle(随机播放)、Loop(循环播放),这里我们默认就行。
然后右键这个MediaTexture创建一个材质,打开这个材质要注意MaterialDomain这个选项,如果是3D场景中使用则用默认的Surface,如果是UI上使用则选最后一个UserInterface。
然后把创建的这个材质拖到播放视频的plane上去
3.给Plane添加蓝图脚本,用于控制视频的播放,名字自己决定,这里用默认名字。
4.添加一个MediaPlayer类型变量,点开眼睛表示公有变量。然后编译一下,播放视频的Plane名字就变成跟蓝图名一样了,这里我改成了Plane_Video方便认识管理,同时Plane的属性面板上出现了一个跟蓝图中定义的同名的变量名MediaPlayer,然后我们把刚才创建的MediaPlayer文件拖上去
5.添加播放功能。选中Plane_Video物体,点击属性面板上的Edit Blueprint,再点击橘黄色按钮打开蓝图编辑器。
然后把MediaPlayer变量拖入编辑区,选择Get获取该变量,然后使用下面的方法播放视频。
OpenSource的资源选择我们拖入视频时自动生成的那个FileMediaSource文件,然后再调用Play函数就行了。同理还有Pause、Close分别表示暂停、关闭。OpenSource初始化完毕后,Play可以在其它地方使用,不一定要放一起使用。
这个时候视频还没声音,选择播放视频的plane的蓝图Plane_Blueprint点击AddComponent,搜索MediaSound,添加该组件,然后把播放视频的名为NewMediaPlayer拖入到MediaSound的MediaPlayer变量上去,这个时候播放视频就有声音了。而且我们还可以直接把MediaSound拖入场景中获得该组件对象,然后调用SetVolumeMultiplier来设置音量大小。
如果是播放网络视频,调用OpenUrl函数就行了,url参数填网络视频的地址。
在UI上播放视频
1.我们在一个UI蓝图控件UI1上拖入一个Image,用于播放视频。然后选中之前的MediaTexture右键创建材质,MaterialDomain类型选择UserInterface,这时候这个材质看起来是黑色图标的样子。
2.选中要播放视频的Image,找到Brush的Image处,点击1处的下拉箭头选择刚才我们创建的视频UI材质,或者点击放大镜图标,然后切换到主界面用鼠标左键点击对应的视频UI材质,再切回来点击3处的左箭头按钮,这样也能选择我们需要的视频UI材质。
其中UI蓝图的右上角有两个按钮,分别用于设计UI和写逻辑。在写逻辑界面如果看不到红色默认事件节点,记得点击EventGraph按钮,这样就会进入逻辑代码编辑区。
3.在这个UI蓝图控件UI1中定义一个MediaPlayer类型变量,默认值选择我们定义的MediaPlayer对象。然后参照前面的方法进行播放就行了。若没有声音的话,则在一个物体上挂一个MediaSound组件就行,视频暂停、关闭时MediaSound也要暂停关闭。
一开始视频是黑屏的,但是有声音,说明播放出来了,但是看不到画面。然后我就怀疑是材质问题,我打开材质看了下,左边的画面在动,但是右边没有线连起来,于是我把线连起来在场景中就看到画面了。原因就是创建材质时默认时Surface类型,然后把材质类型改成UserInterface用于播放视频时,我发现连线就断开了,系统坑我啊。
最终视频播放出来了,就是那个有人在弹钢琴的画面。