找回密码
 立即注册
查看: 378|回复: 0

UE4 C++填坑系列之Standalone Program加载Niagara插件 ...

[复制链接]
发表于 2022-1-14 13:56 | 显示全部楼层 |阅读模式
最近两天用到Niagara做粒子效果,然后就发现遇到各种坑,下面简单跟大家分享下我遇到的坑及填坑方案,供大家参考:
首先说下三大坑:

1.源码版Engine,Niagara粒子效果无论是在Editor还是在Program都无法显示;
2.解决坑一之后,会发现Niagara能显示了,但是材质丢失;
3.坑三是解决坑二时遇到的一个问题:Program修改了插件描述文件后,不起作用,读不到……


下面分别说下解决思路:

坑一:

同一台电脑,我测试了引擎版和源码版,引擎版本新建关卡,添加Niagara,打包,运行,一切Ok!


但是源码版本,Niagara是显示不出来的


解决方案很简单,打开ProjectSetting页面,找到Plugin下的Niagara  和  NiagaraEditor选项卡,分别导出引擎版本的配置信息,然后导入到源码版本,然后再次打包,运行,铛铛铛铛~,你会发现,Niagara可以显示了!

坑二:

坑一解决之后,你会发现,Niagara虽然可以显示了,但是嘛,效果不仅如此人意,然后去叭日志信息,会看到如下报错:
LogStreaming: Error: Couldn't find file for package /Niagara/DefaultAssets/DefaultSpriteMaterial requested by async loading code. NameToLoad: /Niagara/DefaultAssets/DefaultSpriteMaterial
Error: DoesPackageExist: DoesPackageExist FAILED: '/Niagara/DefaultAssets/DefaultSpriteMaterial' is not a standard unreal filename or a long path name. Reason: Path does not start with a valid root. Path must begin with: '/Engine/', '/Game/', '/Config/', '/Script/', '/Extra/', '/Memory/', or '/Temp/'

可以看到,系统找不到Niagara插件下的默认材质,原因更搞笑,因为包名不是以Engine  Game Config等为根目录的,………………,我想说,为啥它就不识别Plugin呢,而且,我已经把Plugin打到Pak文件中了,你还是找不到是不是有点太不智能了。。。
然后,我去叭源码,发现:Editor模式,UE会去找uproject的Plugins列表,把Plugins里面注册的插件都添加到Content Root Path列表中,但是,Program模式没有这个uproject啊,怎么办呢?
首先,全解决方案搜索报错信息,可以看到,PackageName文件中,有一个检查包名是否合法的判断:



报错原因

在这个方法里面会找到所有的资产目录,插件信息会在插件加载时被注册到里面:



获取资产根目录



注册插件

所以,我们要做的就是检查怎么样才能让Program的插件注册进去:



插件是否支持当前Program

调试跟踪代码,会发现,首先Program要加载的插件列表读取是在下图中实现的,可以看出,首先会读取Engine.ini文件,在这个文件中有Plugins Section里的ProgramEnablePlugins key,这个里面添加的Plugin就完成了Editor 模式下 uproject文件里添加PluginList的功能:



注册Program引用到的插件

添加后的结果如下:


这个添加完成后,完成了Plugin的注册,但是你会发现,插件的资产根目录还是没有被注册到根目录列表中,具体原因如下:


这里会判断插件的描述信息中是否支持当前平台,好,那我们添加上支持的平台列表,如下图:


到此为止,坑二已经填完了,逻辑上没有任何问题了。

坑三:

坑二填完之后,编译运行,然而奇迹并没有出现~
然后在资产根目录列表中并没有我们刚刚添加的Niagara插件,进一步深入,发现Niagara的描述文件中并没有出现我们刚刚配置的支持的平台信息,这是为什么呢?uplugin文件的相对路径没有问题,文件修改的没问题,也已经保存了,但是读出来的信息就是不匹配


想到了吗?嗯,答对了,就是因为Program工程加载的是Pak打包后的uplugin文件,嗯嗯,所以重新打包,运行,ok,成功了。
话不多说,请看效果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-28 11:41 , Processed in 0.141946 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表