UE4蓝图与C++的交互

UE4是我到目前为止,接触过的最为复杂的技术,无论是深度还是广度。我们都喜欢简单,做人和做事都是一样,如果可以简单处理事情,就没有必要复杂。但事与愿违,现实中,我们不可能依靠自己单纯简单,就把事情做好。因为人与事的复杂,造成我们技术越来越来复杂。

从技术角度,很多人说C难,而Python简单。这是一个比较错误的观点。准确的说,应该是python比C的语法简单。python设计数据处理,与人工智能,本身不是其中一部分。回头再来说UE4为什么复杂。

因为UE4是一个功能非常全面的引擎,这不是他复杂的原因。只能说UE4公司首先目前的技术实力,只能采用如此复杂的方法,解决现有的事情。但我认为已经做得非常优秀了。而说他技术首先,只是因为没有更为简单的方式,让我们使用技术。比如微软的C#,UE4和C#完全不是一个复杂难度。

回到我们的重点,蓝图和C++这两个同时存在与UE4引擎的语言。但凡语言就有一个编辑器。所有UE4从语言编辑器就有两个。

1.UE4蓝图编辑器,用来编辑器蓝图和其他资源

蓝图编辑器

2.Microsoft Visual Studio用来编辑C++,其实说到C++,这个C++经过UE4改造以后,而非标准的C++,如果你觉得学了,C++标准语法就能玩转UE4的C++,恐怕不能实现。C++一门很复杂的语言,我个人建议要选择性学习,没有必要见到什么都要搞的很明白,不然会陷入语言细节中。

我们怎么来使用UE4的工程,我们新建一个UE4的C++工程以后,目录结构是这样:

工程目录

从这个目录中,我们可以看到两个文件,.sln,.uproject,这两个文件都是工程文件,sln编辑C++,而另一个编辑蓝图。


编辑器对照

一.蓝图调用C++代码,C++与蓝图的交互通过蓝图继承的。一个普通的C++是无法与蓝图交互的,我们需要通过下面这个类

用于交互的类

然后在C++代码里面定义函数:

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyMccActor.generated.h"

UCLASS()
class MYCPPPROJECT_API AMyMccActor : public AActor
{
    GENERATED_BODY()
    
public: 
    // Sets default values for this actor's properties
    AMyMccActor();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public: 
    // Called every frame
    virtual void Tick(float DeltaTime) override;

    UFUNCTION(BlueprintImplementableEvent, Category = "SplineMesh")
    void PrintMessage(const FString &Message);


};

然后在蓝图类里面继承这个类,然后重写函数PrintMessage.

image

以上过程就是蓝图调用C++代码过程,本质上通过继承实现。可能没有办法通过在蓝图中,直接定义C++类实现。

二.C++调用蓝图代码

void XXX::BeginPlay()
{
  TArray<AActor*> _TempArryActors;
  UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::GetClass(), _TempArryActors);
  for (int32 i = 0; i < _TempArryActors.Num(); i++)
  {
    if (_TempArryActors[i]->GetName() == FString("AMyMccActor"))
  {
   Cast<AMySplineMeshActor>(_TempArryActors[i])->PrintMessage(TEXT("找到Actor&调用PringMessage函数"));
  }
}

以上就是蓝图与C++交互的基本方法。C++本身语法已经比较复杂,在UE4中的C++也是被改造的。具体到底怎么用,还是看如何选择,对于没有功底的小白,还是UE4,给定的方法使用,会相对简单一些。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,819评论 0 10
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 3,055评论 1 3
  • 《稀缺》这本书,陈述的观点新颖独特。观点在被作者自己各种推翻,又被各种重塑。 难免让人摸不着头脑。难免会晕菜,但真...
    白桦i阅读 303评论 0 0
  • 山泰在大学想家了,但是回想一下,在家里也没有多么好,山泰不要对自己虚构的未来充满幻想,只要好好地活在当下,山泰内心...
    想写出好文笔的孩子阅读 166评论 0 0
  • 这是连续30天坚持每一天一篇原创文章了,30天说长不长,说短也不短了,其实,世界上最难的事情是坚持,哪怕是一件简单...
    未来十年新零售阅读 167评论 0 0