笔者开始是看到这篇文章,打算照着这篇知乎上讲解的比较清晰,有源代码的文章写(暂时称为1文章),大部分内容是正确的,但是有几个问题:
-
最后蓝图里总是找不到我的蓝图函数节点。然后看到这篇文章这篇官网的文章,其中主要内容是说引擎自带了LensDistorstion这个shader的插件,怎么按照该插件里的cpp、shader,添加自己的shader以及用蓝图调用这个shader,跟我们要实现的功能是一致的。所以我就去看引擎里确实有这个shader及其调用方式,(除了蓝图函数又调用了另一个类的函数,而1文章中直接调用的全局static函数,以及shader不同,其他都差不多),然后比较,看到头文件路径有了不同:看自己用的引擎版本里的LensDistortionBlueprintLibrary.h里,#include代码是“#include “Kismet/BlueprintFunctionLibrary.h””,而文章1中,前面还有“public”。所以,最好还是参考引擎自带的,因为每个引擎版本的代码有所不同。后来,照着2文章修改了头文件,终于能够在蓝图里找到该节点了。
-
自己在Build.cs文件里在添加依赖路径的时候,publicIncludePath处少添加了路径,导致报错,找不到文件;添加后就好了。
-
另外,1文章中蓝图里接受键盘按键并不起作用。最后解决方案,3.参考这篇文章,将蓝图的接收input改为player0,默认是disable;4.参考这篇文章,在蓝图->Event Begin Play调用EnableInput,参数为GetPlayerController。
一开始这几个问题老是困扰着我,在家没解决,然后到公司里,解决了。没有记录下来。回到家后,又重复工作,浪费了一天时间。所以,养成记录的好习惯,总结经验教训,减少重复工作。
另外,添加global shader,并加到渲染管线,可参考这篇文章5. 这篇文章6和5类似.
https://www.unrealengine.com/en-US/blog/how-to-add-global-shaders-to-ue4
http://rcaloca.blogspot.com/2018/01/adding-global-shaders-to-ue4-v20.html