说点废话,之前主要是做Unity,因为公司业务的原因,虽然专门学了Unity热更、shader、帧同步、编辑器扩展、各种设计模式等,但是很多东西一直也没怎么用。后来公司准备部分业务用UE做,当然Unity这块也没丢弃。当时我纠结了很久,是要继续深耕Unity,还是再学学UE?
(通常称为ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为
这里对比一下C#还是有些不同的,C++中你可以理解为接口就是抽象类,因为C++中并没有interface关键字,所以C++的接口是通过抽象类来实现的,所以C++中的接口应该理解为抽象类:
抽象类和接口与普通类相比,普通类的继承也可以由子类重写父类的方法,但是这种重写不是必须的,这好处就是更灵活,坏处就是有可能忘记重写,造成类的误用。
先把接口添加到普通蓝图中,这个添加类似于继承,我测试过即使不在EventGraph中使用OnInteract编译也不会报错,所以我认为添加接口到蓝图中时,应该就重写了改虚方法,只不过是没有具体的实现内容,具体内容还是要在EventGraph中写,所以才能通过编译。
如果你看明白编程语言中的接口的定义和用途,那么这就是蓝图中BlueprintInterface的定义和作用,因为蓝图中的就是通过编程语言来实现的。
从蓝图接口的可视化面板中可以看出,可以添加方法,这些就是代码中的虚方法;而且蓝图接口中这些虚方法是无法写具体的实现的,图中可以看出是灰色的,这和代码中的接口是一致的。
对比往往是快速理解一个概念最好的方法,本人之前先学的C#,后有学了Unity,用unity做了四年左右的建筑方面数字孪生的项目;所以在学Unreal的时候学C++的时候,我总会和Unity以及C#做对比,这样学起来效率会更高。
猜想:这个蓝图接口的方法在所有蓝图中可以直接访问,其他自定义的事件也是可以的。EventGraph中编写逻辑时,例如调用某个事件或者某个方法,肯定是在调用之前先找到了这个类型实例的引用,上图中可以看出,HitActor返回的就是相应的引用,如果击中的物体没有该OnInteract方法,自然也就不会执行。
人应该不断地提升自己。我们应该多学习各学科的主要知识,而不是和细枝末节纠缠不清。我特别注重汲取各学科的主要知识,这样才不至于只见树木,不见森林。把各学科的主要知识融会贯通,能发挥出巨大的威力。
总结来说就是有输出参数时,蓝图接口就是一个函数,可以添加新的功能;如果没有输出参数,那么蓝图接口就是一个执行事件或者一个函数,但都无法编辑。
后来觉得,东西是怎么学都学不完的,所以最好的办法就是提高学习能力,有需要,能尽快学会并应用就很好,所以既然现在用得到UE,那就学学。
有话要说...