2019-07-18 13:40:28 xuebulaiyaodidiao 阅读数 363
  • 虚幻4开发入门

    UnrealEngine向来以一流效果和难以上手而著称,本课程就是帮助你跨过入门的这道门槛,能够上手掌握这个国际一流的3D引擎。

    65313 人正在学习 去看看 房燕良

文件夹结构

打开你所下载的虚幻引擎

首先大致了解下目录结构,进入你存储的路径找到项目名文件夹下会有如下几个文件夹:

以下是官方文档中解释的目录存放内容

官方文档地址(建议保存):http://api.unrealengine.com/CHN/

虚幻的基本操作

虚幻界面大致如下:刚进去会有一个桌子和椅子,我的是已有的项目打开

点击基本操作窗口-如图下窗口

操作方式-如fps游戏

wsad移动位置

鼠标右键按住不放划动移动视角

键盘e键水平上移

键盘q键水平下移

键盘f键聚焦

点击你要操作的物体按f聚焦-如我选中椅子:

选中你所操作的物体(我选的椅子)

按w键盘会出现x,y,z轴的移动操作

拖动其中箭头移动物体

选中如上图所示可按两个方向水平移动

选中所选物(椅子)

按e键旋转

按r键放大或缩小

请自行尝试

选中物体后可以看细节浏览器查看此物体的细节

如果你找不到你有那些物体或者物体过多-可以在世界浏览器中找

创建项目是选择具有初学者内容会有很多基础资产如图-点击内容窗口查看:

需要添加椅子直接将内容浏览器里的资产拖拽到基本操纵窗口

虚幻语言设置

在菜单栏上找到编辑

点击editor preferences

新版本有中文选项

声明

前面忘了说了本文章仅作为学习总结使用。

我是在udemy上看的Unreal Engine C++Developer:Learn C++ and Make Video Games

只可惜是英文视频没有中文-也推荐去看

2017-08-28 11:15:38 zilisen 阅读数 2914
  • 虚幻4开发入门

    UnrealEngine向来以一流效果和难以上手而著称,本课程就是帮助你跨过入门的这道门槛,能够上手掌握这个国际一流的3D引擎。

    65313 人正在学习 去看看 房燕良

创建MediaPlayer和MediaSource

UE4中的Media框架在官方文档中有蓝图的使用示例:
https://docs.unrealengine.com/latest/CHN/Engine/MediaFramework/index.html

在此我们用C++来实现。

首先在Content文件夹下新建一个Movies文件夹,将你要播放的视屏文件拷贝到项目工程的对应文件夹里。然后创建一个Media->FileMediaSource,此处我命名为SampleVideo,双击打开后再FilePath里选择你之前添加的视屏文件。
这里写图片描述
接着创建一个Media->MediaPlayer,勾选同时生成MediaTexture和SoundWave,此处我命名为SampleMedia。
这里写图片描述
这里写图片描述

创建UMG

接下来我们在编辑器中创建一个简单的UMG,之后再在C++中控制他来播放视频。
在Content目录下新建一个UMG文件夹,然后新建一个WidgetBlueprint,命名为MediaPlayUMG,打开它。然后我们要做的只是添加一个Image控件填充整个CanvasPanel,然后给Image的Brush设置为SampleMedia_Video
这里写图片描述

C++代码控制播放视频

接下来我们进入VS来添加控制视频播放的代码,此处我把控制代码写在了PlayerController中。

//MyPlayerController.h

#pragma once

#include "GameFramework/PlayerController.h"
#include "MyPlayerController.generated.h"

class UUserWidget;
class UMediaPlayer;
/**
 * 
 */
UCLASS()
class STARTINGMENU_API AMyPlayerController : public APlayerController
{
    GENERATED_BODY()

public:
    AMyPlayerController();
    void BeginPlay() override;    
    void ShowMovieWidget();
    void ShowMainMenuWidget();
    void PlaySound();
    void EndPlaySound();

    UFUNCTION()
    void EnterVR();

    UFUNCTION()
        void MovieEnd();

private:

    UAudioComponent* SoundWave;
    UMediaPlayer* mediaPlayer;

    UUserWidget* MovieWidget;
    UUserWidget* MainMenuWidget;

};
//MyPlayerController.cpp

#include "StartingMenu.h"
#include "UserWidget.h"
#include "CanvasPanel.h"
#include "Image.h"
#include "Button.h"
#include "MediaSoundWave.h"
#include "MediaSource.h"
#include "MediaPlayer.h"
#include "MyPlayerController.h"

AMyPlayerController::AMyPlayerController()
{
    bShowMouseCursor = true;
}

void AMyPlayerController::BeginPlay()
{
    Super::BeginPlay();
    ShowMovieWidget();
}

void AMyPlayerController::ShowMovieWidget()
{
    if (nullptr == MovieWidget)
    {
        UClass* aa = LoadClass<UUserWidget>( NULL, TEXT( "Blueprint'/Game/UMG/MediaPlayUMG.MediaPlayUMG_C'" ) );
        MovieWidget = CreateWidget<UUserWidget>( this, aa );
    }
    MovieWidget->AddToViewport();

    UMediaSource* SampleVide = LoadObject<UMediaSource>( NULL, TEXT( "FileMediaSource'/Game/Movies/SampleVideo.SampleVideo'" ) );
    mediaPlayer = LoadObject<UMediaPlayer>( NULL, TEXT( "MediaPlayer'/Game/Movies/SampleMedia.SampleMedia'" ) );
    mediaPlayer->OpenSource( SampleVide );

    PlaySound();  

    mediaPlayer->OnEndReached.AddDynamic( this, &AMyPlayerController::MovieEnd );
}

void AMyPlayerController::ShowMainMenuWidget()
{
    if (nullptr == MainMenuWidget)
    {
        UClass* aa = LoadClass<UUserWidget>( NULL, TEXT( "Blueprint'/Game/UMG/MainMenu.MainMenu_C'" ) );
        MainMenuWidget = CreateWidget<UUserWidget>( this, aa );
    }
    MainMenuWidget->AddToViewport();

    UWidget* ButtonEnter = MainMenuWidget->GetWidgetFromName( TEXT( "EnterVRScene" ) );
    UButton* buttonEnterVR = Cast<UButton>( ButtonEnter );
    buttonEnterVR->OnPressed.AddDynamic( this, &AMyPlayerController::EnterVR );
}

void AMyPlayerController::ShowLoadingSceneWidget()
{

}

void AMyPlayerController::PlaySound()
{
    if (nullptr == SoundWave)
    {
        UMediaSoundWave* movieSound = LoadObject<UMediaSoundWave>( NULL, TEXT( "MediaSoundWave'/Game/Movies/SampleMedia_Sound.SampleMedia_Sound'" ) );
        SoundWave = UGameplayStatics::CreateSound2D( this, movieSound );
    }    
    SoundWave->Play();
}

void AMyPlayerController::EndPlaySound()
{
    if (SoundWave != nullptr)
    {
        SoundWave->Stop();
    }
}

void AMyPlayerController::EnterVR()
{
    if (nullptr != MainMenuWidget)
    {
        MainMenuWidget->SetVisibility( ESlateVisibility::Hidden );
    }
}

void AMyPlayerController::MovieEnd()
{
    GEngine->AddOnScreenDebugMessage( -1, 1, FColor::Red, TEXT( "AMyPlayerController::MovieEnd" ) );
    if (MovieWidget != nullptr)
    {
        MovieWidget->RemoveFromParent();
    }
    ShowMainMenuWidget();
}

接下来把我们写的MyPlayerController设置为当前场景GameMode的PlayerController类就能正常播放了。
这里写图片描述

小结

此处我只是实现了简单的视频播放功能,添加视频播放的各种控制功能也是可以实现的。而且UMG也能放在3D场景中实现。

UE4联网Steam

阅读数 2642

UE4+视频播放

阅读数 56

UE4 简易天空盒制作

阅读数 9602

没有更多推荐了,返回首页