UE4年初笔记汇总

18年转眼马上过去两个月了,却有种还什么都没有做的感觉呢。

这里是最近的一些记录内容,由于比较零碎细小,干脆就合在一起了。

使用的UE4版本为UE4.15。

WidgetBind

这个是一个Meta,在UMG的数据绑定时很有用。

虽然UMG的逻辑大部分可以在蓝图中完成,而且控件也有自己的UPROPERTY和UFUNCTION绑定机制。

但是在需要进行复杂的UI逻辑编写时还是会需要在代码中进行控制。

这个时候就会遇到需要对应的UMG控件的指针的问题,虽然可以通过事先定义的UPROPERTY指针然后再在蓝图中进行赋值等一些方法进行。但在使用上多少会有不便之处。

其实,UE4内部是有提供方便这种情况的Meta方便使用的:

只要这样定义了之后,再做继承了的蓝图中拉出目标控件然后命名为ImgBinded就可以了。同时也可以将控件指定为可选的,例如:

如果不指定为可选又没有在蓝图中添加对应名称的控件的话,就会报错

image

Console

这个也是最近遇到的麻烦,当程序的业务逻辑越来越复杂,往往会多出很多功能上的限制,导致在测试时遇到麻烦。

每次都要额外的添加测试UI,将一些C++函数暴露到蓝图,最后测试功能就一片混乱了。此时就可以添加一些Console来方便在编辑器中调试,由于Shipping模式默认是没有Console的,也不用担心一不小心测试代码被放到终端用户手中的尴尬情况。

同时,将Console代码进行一定程度的管理,也可以方便将调试功能整合在一起,避免不必要的混乱。

UE4的Console系统非常的易于扩展,使用起来也没有什么副作用:

使用UE4提供的帮助类,能够非常快速的定义Console指令。ConsoleCommand的使用和通常的Delegate是一样的,添加上面的代码后。

就可以在Console中输入db.map.jmp来使用了。

对于需要输入参数的情况,其实FAutoConsoleCommand还有其他的变体是可以携带参数的,详情可以参考其定义。

Media Frame Work

UE4默认使用WMF在Windows上进行视频播放的操作,但是在使用上还是会有些细节的部分。

二次播放杂音

这个Bug一般是自己使用C++进行播放控制时容易出现,使用蓝图进行播放时没有遇到这个问题。

问题在于,MediaPlayer的声音播放并不会自动的跟随MediaPlayer的停止、播放、重新开启操作被控制,虽然表面上声音的播放确实停止了,但是重新开始播放声音的话就会出现状态重置不明确的问题,因此需要自己对事件进行绑定会进行控制。

然后找一个时机绑定到MediaPlayer上去就可以了

这个是在4.15上遇到的,记得之后的版本更新中MediaPlayer有过改动,不知是不是就没有这样的问题了。

打包后无法播放

首先要检查的是打包时对应的视频文件有没有被拷贝到发布目录中,由于UE4打包的时候只会对进行了链接注册的资源进行打包,所以如果视频文件没有被蓝图或者C++显式的引用的话,并不会被自动拷贝到发布目录中去。

所以需要在打包设置中进行设置,保证视频目录中的视频都被拷贝到了发行版中。

image

当然,也可以手动将资源拷贝到对应的目录中去,不过这样不方便管理,容易忘记……

另外就是要检查系统本身的Wmf相关的设定了,最主要就是检查下WindowsMediaPlayer能否正常的播放视频,因为wmp和ue4一样都依赖wmf进行视频播放,所以容易排查问题。主要是有的Ghost的系统会有不必要的精简,导致wmf功能不正常。

 

如果你使用的是最新版本的引擎的话,也可以考虑社区提供的[VlcMedia]的插件,经过测试4.18版本下工作很正常,不过由于这边使用的是4.15版本,就没有办法了呢。

同时Vlc还支持更多的播放格式和方式,例如Vlc是支持m3u8的,而wmf并不支持很多流播放的功能。

|
本博客所有内容遵循CC BY-NC-SA 4.0协议, 如有转载,请注明出处。
10 条评论

    老哥你是在北京吗 ?还招人么  ?UE4 两年


    这边并没有招过人呢,自己也是给人打工 XD


    老哥在北京?3月30的unreal circle老哥参加吗,参加的话小弟拜见一下啊


    并不在北京,这边是深圳,所以没法参加呢


    方便留个QQ吗?我也是学习UE4的。


    是留言的QQ吗?已加,不过我平时不是很经常上q呢~


    同在深圳,老哥加我qq呀


    是留言的这个QQ吗?已加。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">