前言
以下笔者在练习使用UE5从0-1开发一款图片软件过程中所遇到的问题,说起来简单,但是依旧能在练习过程中学到一些新的知识,或者曾经模糊的知识,以此加以巩固。
遭遇问题
1.使用UE5如何设置打包?
UE5的打包设置并不困难,只是需要耐心一些解决一些JDK和NDK兼容的问题,可能最新的版本的会导致打包不过。
参考链接:
https://docs.unrealengine.com/4.27/zh-CN/SharingAndReleasing/Mobile/Android/PackagingAndroidProject/
2.UE5怎么将APP设置为竖屏?
3.如何设计PanelManager,使用C++还是蓝图?
本次PanelManager就设为一个Actor,因为不涉及到场景的切换,所以直接拖放一个到场景中作为单例使用,当然也可以参考StreamManager封装成单例来使用。
4.PanelManager应该放在哪里可以方便调用?
本次是拖放到场景中,然后使用静态蓝图方法封装一个Get
因为BP_Instance的时序要更早,所以初始化是放在场景中BP_Main进行统一初始化
5.如何设置光标可见?
6.UE5项目需要拷贝,需要移植那几个文件夹?
如果有插件的,还需要选择插件目录
不过最好的是去掉插件里的构建文件夹,否则会文件会很大
7.如何在蓝图中加载数据表(DataTable)?
8.遇到结构体无法在蓝图中展开?
需要注意几点:
- 该结构是否标记为蓝图类型
- 该结构中的字段是否标记为UPROPERY,且要设置为BlueprintReadWrite和EditAnywhere
- 该结构中的字段是否能被蓝图支持
9.UE5中怎么实现单例?
- SubSystem
- GCObject
- UObject放GameInstance
可以参考官方StreamableManager的实现
10.UFUNCTION,UPROPERY的使用方法?
可以参考官方
https://docs.unrealengine.com/4.26/zh-CN/ProgrammingAndScripting/GameplayArchitecture/Properties/
以及大象无形书籍里的第五章
11.LoadDynamicTexture怎么实现异步加载?
本例的实现方式:单独开一个线程,该线程负责IO和解码等运算,然后将颜色值返回到主线程,使用Tick进行Spawn相关的UObject。
12.UE5在cpp使用插件蓝图库文件报错?
报错:
解决前:
解决后:
需要在对应的蓝图库前补上模块名
13.UE5中的委托
单播动态委托可以用于蓝图传参,
但是多播动态委托不能用于蓝图传参,不过可以参考引擎源码中的DownloadImage的在蓝图中的使用方法。
参考链接:
https://www.bilibili.com/read/cv9602026
14.UE5怎么打包图集?
使用TexturePacker
15.UE5中加载资源的几种方法
LoadObject(加载非蓝图资源)
LoadClass(加载蓝图资源)
StreamManager
16.避免与解决UE5一启动就崩溃的Engine.ini配置方法。
本次真实的情形:
真实崩溃的原因是因为在ResourceManager里声明初始变量直接进行了赋值,但是这里的引用其实还没有被加载。
注意:单例不能在声明变量时直接初始化,因为在编辑器可能时加载了,但是打到包可能没有加载就会产生闪退。
一般崩溃的时候会把崩溃信息复制进粘贴板,只需要找一个文本粘贴即可。
17.为什么在UE5中无法播放视频?
- 可能是编码的问题
- 可能是RHI的问题
本次的解决方案是将DX12改为DX11就可以解决了
18.UE5如何遍历枚举类型?
19.怎么获取视频的分辨率大小?
使用GetVideoTrackDimensions,不过需要Delay,也就是视频要完全加载完毕,才能获取到正确的值。
20.UE5中的定时器
UKismetSystemLibrary::K2_SetTimerDelegate