查看: 194|回复: 8

[编程指南] 【4. 配置游戏模式 | Unreal Engine】

[复制链接]

1

主题

273

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
73034
发表于 2016-6-27 01:03:03 | 显示全部楼层 |阅读模式



上一步
下一步



   
编程指南主页


在 Content Browser(内容浏览器) 中,我们会基于项目的 Game Mode(游戏模式) 来添加一个 Blueprint Class(蓝图类) 。 这样我们就可以对这两个类的变量设置任意值了。 我们可以这样操作:

点击 Content Browser(内容浏览器) 上的 Add(添加) 按钮。

AddNewBPClass.jpg




选取HowTo_UMGGameMode为父类。 它位于"All Classes"(所有类)部分的列表中。

PickParentClassForGameModeBP.jpg




将运算结果的 Blueprint(蓝图) 资源命名为"MenuGameMode"。

为了能看到游戏中的鼠标指针,我们需要创建 Player Controller(玩家控制器) 的 Blueprint(蓝图) ,正如我们使用 Game Mode(游戏模式) 所操作的那样。

再次点击 Content Browser(内容浏览器) 上的 Add(添加) 按钮。

选择"Common Classes"(常见类)部分的 Player Controller(玩家控制器) 。

将 Blueprint(蓝图) 命名为"MenuPlayerController"。

编辑"MenuPlayerController"。

勾选"Show Mouse Cursor"(显示鼠标指针)框体。

GamePlayerController.jpg




编辑"MenuGameMode"。

起始的控件类必须被设置为"MainMenu"资源,从而在游戏开始时弹出菜单。

默认Pawn类应该被设置为 Pawn 而不是 DefaultPawn ,这样玩家在处于菜单中时将无法到处移动。

玩家控制器类应被设置为我们创建的"MenuPlayerController"资源,这样在游戏中将可以显示鼠标指针。

ConfigureGameMode.jpg




为了使用 Blueprint(蓝图) ,我们必须返回 Level Editor(关卡编辑器) 窗口并通过 Settings(设置) 按钮来变更我们当前 Level(关卡) 的 World Settings(世界设置) 。

WorldSettingsBar.jpg





我们也可以在 Project Settings(项目设置) 菜单中设置默认的 Game Mode(游戏模式) ,它位于 Maps and Modes(地图和模式) 部分。 如果您使用这种方式来设置,除非进行单独覆盖,否则您所有的关卡都会被默认设置为您选择的 游戏模式 。 您采用哪种方式,取决于您希望如何设置自己的项目。


此时将会打开 World Settings Panel(世界设置面板) 。 默认情况下,它会和 Details Panel(详细信息面板) 一起驻留,但可以被移动到其它位置。 我们需要设置Game Mode Override(游戏模式覆盖)域为"MenuGameMode"资源。

WorldSettings.jpg





我们自定义的 Game Mode(游戏模式) 资源现在在关卡中生效了,配置为载入主菜单,并使用显示鼠标指针的 Player Controller(玩家控制器) 。 如果我们现在就运行游戏,Quit(退出)按钮会和我们预期一样运行,而点击New Game(新建游戏)按钮会让我们进入空白的菜单屏幕。 接下来我们要设置New Game(新建游戏)菜单。


完成的代码


HowTo_UMG.Build.cs

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.using UnrealBuildTool;public class HowTo_UMG : ModuleRules{    public HowTo_UMG(TargetInfo Target)    {
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "UMG" });
//PrivateDependencyModuleNames.AddRange(new string[] {  });
// 如果您正在使用Slate UI则取消注释
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
// 如果您正在使用在线功能则取消注释
// PrivateDependencyModuleNames.Add("OnlineSubsystem");
// if ((Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Win64))
// {
//      if (UEBuildConfiguration.bCompileSteamOSS == true)
//      {
//
   DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam");
//      }
// }    }}
HowTo_UMGGameMode.h

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.#pragma once#include "Blueprint/UserWidget.h"#include "GameFramework/GameMode.h"#include "HowTo_UMGGameMode.generated.h"/** *  */UCLASS()class HOWTO_UMG_API AHowTo_UMGGameMode : public AGameMode{    GENERATED_BODY()public:    /** 在游戏开始时调用。 */    virtual void BeginPlay() override;    /** 移除当前菜单控件并且如果可能,从指定类中创建新控件。 */    UFUNCTION(BlueprintCallable, Category = "UMG Game")    void ChangeMenuWidget(TSubclassOfUUserWidget NewWidgetClass);protected:    /** 在游戏开始时我们将作为菜单使用的控件类。 */    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UMG Game")    TSubclassOfUUserWidget StartingWidgetClass;    /** 用作为菜单的控件实例。 */    UPROPERTY()    UUserWidget* CurrentWidget;};
HowTo_UMGGameMode.cpp

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.#include "HowTo_UMG.h"#include "HowTo_UMGGameMode.h"void AHowTo_UMGGameMode::BeginPlay(){    Super::BeginPlay();    ChangeMenuWidget(StartingWidgetClass);}void AHowTo_UMGGameMode::ChangeMenuWidget(TSubclassOfUUserWidget NewWidgetClass){    if (CurrentWidget != nullptr)    {
CurrentWidget-RemoveFromViewport();
CurrentWidget = nullptr;    }    if (NewWidgetClass != nullptr)    {
CurrentWidget = CreateWidgetUUserWidget(GetWorld(), NewWidgetClass);
if (CurrentWidget != nullptr)
{
     CurrentWidget-AddToViewport();
}    }}


   
上一步
下一步



   
编程指南主页
回复

使用道具 举报

0

主题

863

帖子

2850

积分

vip会员

Rank: 1

积分
2850
发表于 2016-7-2 18:19:41 来自手机 | 显示全部楼层
看一下你发的到底是什么鬼!
回复 支持 反对

使用道具 举报

0

主题

841

帖子

2819

积分

vip会员

Rank: 1

积分
2819
发表于 2016-7-3 18:27:42 来自手机 | 显示全部楼层
恩,好资源~ 哈哈~
回复 支持 反对

使用道具 举报

0

主题

936

帖子

3068

积分

vip会员

Rank: 1

积分
3068
发表于 2016-7-4 10:18:41 来自手机 | 显示全部楼层
不错,我喜欢这个,看看多少金币哦
回复 支持 反对

使用道具 举报

0

主题

883

帖子

2915

积分

vip会员

Rank: 1

积分
2915
发表于 2016-7-6 10:43:25 来自手机 | 显示全部楼层
看看效果,谢谢分享
回复 支持 反对

使用道具 举报

0

主题

888

帖子

2933

积分

vip会员

Rank: 1

积分
2933
发表于 2016-7-7 23:14:27 来自手机 | 显示全部楼层
不错哦  下载看一下啊
回复 支持 反对

使用道具 举报

0

主题

873

帖子

2889

积分

vip会员

Rank: 1

积分
2889
发表于 2016-7-8 08:19:49 | 显示全部楼层
这个必须顶,撸主好人
回复 支持 反对

使用道具 举报

0

主题

896

帖子

2958

积分

vip会员

Rank: 1

积分
2958
发表于 2016-7-15 09:17:13 来自手机 | 显示全部楼层
嗯,这个资源特别的好啊,赶紧下来收藏起来。
回复 支持 反对

使用道具 举报

0

主题

848

帖子

2834

积分

vip会员

Rank: 1

积分
2834
发表于 2016-7-18 16:56:29 来自手机 | 显示全部楼层
多少钱,看看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部