zoukankan      html  css  js  c++  java
  • <转载> UE4的Actor类C++简单尝试

    一开始我用了一段时间UE4,发现如果用蓝图系统真的不太适合我的风格。因为之前一直都是用Unity3D做程序开发的。但是后来接触了UE4的C++之后感觉还是挺良好的。貌似国内没有相关的书籍和教材,那就只能去看官网的参考文档了

    https://docs.unrealengine.com/latest/INT/Programming/index.html

    UE4和Unity3D给我的总体感觉:

    1.UE4消耗性能比Unity大N多,基本上开了UE4游戏都开不了
    2.UE的蓝图适合给美工看,程序员还是老老实实用C++吧
    3.Unity每次写完C#代码保存就能运行,而UE4只能每次写完代码手动再编译和重启一次才能使用,这个很依赖性能特别强的电脑,尤其是CPU、固态、固态
    4.Unity基于组件编程,每个在视图窗口里面的Gameobject继承自MomoBehavior都有OnGUI、Update、Start之类的 系统回调给你使用。而UE4只能自己手动继承虚函数Tick和BeginPlak,对它进行复写。给我感觉就是2部好车,一部是自动挡、一部是手动挡。

    新建一个虚幻4的C++基础项目

    Paste_Image.png

    新建完成后

    Paste_Image.png

    新建一个Actor类

    Paste_Image.png

    为其添加上代码

    #pragma once
    #include "GameFramework/Actor.h"
    #include "MyActor.generated.h"
    UCLASS()
    class EMPTY_API AMyActor : public AActor
    {
        GENERATED_BODY()
    
    public:
        //运行时间
        float RunningTime;
        //构造器
        AMyActor();
        //开始时执行的回调 相当于Unity里面的 void Start()
        virtual void BeginPlay() override;
    
        //每一帧执行的回调 相当于Unity里面的 void Update()
        virtual void Tick( float DeltaSeconds ) override;
    };
    #include "empty.h"
    #include "MyActor.h"
    #include "iostream"
    //构造器
    AMyActor::AMyActor()
    {
        //设置每一帧执行一次Tick() ,如果不需要就设为false
        PrimaryActorTick.bCanEverTick = true;
    }
    //开始时执行的回调
    void AMyActor::BeginPlay()
    {
        Super::BeginPlay();
    
        std::cout << "开始执行";
    }
    //每一帧执行的回调
    void AMyActor::Tick( float DeltaTime )
    {
        std::cout << "每一帧执行";
        Super::Tick( DeltaTime );
        //获取Actor的位置 保存到NewLocation变量
        FVector NewLocation = GetActorLocation();
        //获取时间差值
        float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
        //改变的高度,每次递增20.0f
        NewLocation.Z += DeltaHeight * 20.0f;
        //改变运行时间的值
        RunningTime += DeltaTime;
        //设置当前Actor的位置
        SetActorLocation(NewLocation);
    }
     

    最后把代码MyActor添加到一个圆锥体上,按Ctrl+F5 编译一下 就能看到它在上下的晃动

  • 相关阅读:
    P3391 【模板】文艺平衡树(Splay)
    P4198 楼房重建
    P1491 集合位置
    P3957 跳房子
    P4016 负载平衡问题
    bzoj1077: [SCOI2008]天平 差分约束
    bzoj1151: [CTSC2007]动物园zoo 状压dp
    bzoj1076: [SCOI2008]奖励关 状压dp
    bzoj1226: [SDOI2009]学校食堂Dining 状压dp
    bzoj1879: [Sdoi2009]Bill的挑战 状压dp
  • 原文地址:https://www.cnblogs.com/hhxxgdd/p/8979241.html
Copyright © 2011-2022 走看看