2017-08-11 10:16:00 weixin_33860737 阅读数 7
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2706 人正在学习 去看看 杨石兴

一、关卡编辑器

 

 

二、Slate

1、游戏使用 Slate,模块依赖。

修改 [ProjectName].build.cs

PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

 

2、显示控件

传入一个存储在成员变量中的控件引用(作为 TSharedPtr ):

GEngine->GameViewport->AddViewportWidgetContent(

    SNew(MyWidgetPtr.ToSharedRef())

);

 

当将控件传入到 GameViewportClient::AddViewportWidgetContent() 时使用 SNew() 创建该控件:

GEngine->GameViewport->AddViewportWidgetContent(

    SNew(SWeakWidget)

    .PossiblyNullContent(MyWidgetClass)

);

 

或者使用 SAssignNew() 来创建控件,并将它分配给 TSharedPtr 成员,然后传入它:

GEngine->GameViewport->AddViewportWidgetContent(

    SAssingNew(MyWidgetPtr, SWeakWidget)

    .PossiblyNullContent(MyWidgetClass)

);

 

 

3、从视口中删除控件

通过向 GameViewportClient::RemoveViewportWidgetContent() 中传入到先前添加的控件的引用, 可以从视口中单独地删除Slate控件。

 

GEngine->GameViewport->RemoveViewportWidgetContent(

    SNew(MyWidgetPtr.ToSharedRef())

);

 

另外,通过调用 GameViewportClient::RemoveAllViewportWidgets() 可以立即删除所有控件。

 

三、底层方法

1、template< class ObjectType, ESPMode Mode> class TSharedRef

{

};

 

转载于:https://www.cnblogs.com/mirchd/p/7344436.html

2017-05-16 11:13:28 qq_26151341 阅读数 334
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2706 人正在学习 去看看 杨石兴

最终效果

最终效果

“希望直接拖入编辑生成Actor的类”定义:

NOTE:这边只处理了蓝图类的情况,请在编辑器里用蓝图类继承该类做实验

UCLASS(Blueprintable)
class PROJECTNAME_API UItem : public UObject
{
    GENERATED_BODY()
public:
    UPROPERTY(EditAnywhere, Category = "Item")
    UStaticMesh* StaticMesh;
};

继承UActorFactory

1、继承UActorFactory
2、修改构造函数,给NewActorClass 赋值
3、重写UActorFactory中的函数,CanCreateActorFrom, PostSpawnActor

类定义

UCLASS()
class PROJECTNAME_API UActorFactoryItem : public UActorFactory
{
    GENERATED_BODY()

public:
    UActorFactoryItem();

    virtual void PostSpawnActor(UObject* Asset, AActor* NewActor) override;//该函数用于处理产生的Actor

    virtual bool CanCreateActorFrom(const FAssetData& AssetData, FText& OutErrorMsg) override; //该函数用于判断是否能SpawnActor于视图中
};

类实现

UActorFactoryItem::UActorFactoryItem()
{
    DisplayName = NSLOCTEXT("Item", "Item", "Item Static Mesh");
    NewActorClass = AStaticMeshActor::StaticClass(); //设置拖入场景Spawn的Actor
    bUseSurfaceOrientation = true;
}

bool UActorFactoryItem::CanCreateActorFrom(const FAssetData& AssetData, FText& OutErrorMsg)
{
    if (!AssetData.IsValid() || !AssetData.GetClass()->IsChildOf(UBlueprint::StaticClass()))
    {
        OutErrorMsg = NSLOCTEXT("CanCreateActor", "NoStaticMesh", "A valid static mesh must be specified.");
        return false;
    }

    const FString* ParentClassPath = AssetData.TagsAndValues.Find(TEXT("ParentClass"));
    if (ParentClassPath == NULL || ParentClassPath->IsEmpty())
    {
        OutErrorMsg = NSLOCTEXT("CanCreateActor", "NoBlueprint", "No Blueprint was specified, or the specified Blueprint needs to be compiled.");
        return false;
    }
    UClass* ParentClass = FindObject<UClass>(NULL, **ParentClassPath);

    bool bIsActorBased = false;
    if (ParentClass != NULL)
    {
        // The parent class is loaded. Make sure it is derived from AActor
        bIsActorBased = ParentClass->IsChildOf(UItem::StaticClass());
        return bIsActorBased;
    }

    return false;
}

void UActorFactoryItem::PostSpawnActor(UObject* Asset, AActor* NewActor)
{
    Super::PostSpawnActor(Asset, NewActor);

    UBlueprint* ItemBlueprint = CastChecked<UBlueprint>(Asset);

    UClass* ItemClass = CastChecked<UClass>(ItemBlueprint->GeneratedClass); //从蓝图类中生成UClass

    UItem* Item = CastChecked<UItem>(ItemClass->GetDefaultObject());

    //UE_LOG(LogActorFactory, Log, TEXT("Actor Factory created %s"), *StaticMesh->GetName());

    // Change properties
    AStaticMeshActor* StaticMeshActor = CastChecked<AStaticMeshActor>(NewActor);
    UStaticMeshComponent* StaticMeshComponent = StaticMeshActor->GetStaticMeshComponent();
    check(StaticMeshComponent);

    StaticMeshComponent->UnregisterComponent();

    StaticMeshComponent->StaticMesh = Item->StaticMesh;
    //    StaticMeshComponent->StaticMeshDerivedDataKey = Item->StaticMesh->RenderData->DerivedDataKey;

    // Init Component
    StaticMeshComponent->RegisterComponent();
}

蓝图继承UItem,设置StaticMesh属性

最后将蓝图拖入编辑器的场景就可以看到效果。

2016-11-22 13:31:53 u013131744 阅读数 5144
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2706 人正在学习 去看看 杨石兴

195009m6d00glg007z461l

一. 标签栏标签栏就是最顶部看起来像这样的东西:


在最右方就是项目的名称,如这里的test1。前面的对话气泡是反馈按钮,你可以给Epic公司提供任何意见。而接着的帽子图标,是显示虚幻4内置的教程。

二. 菜单栏

在标签栏下方就是菜单栏,它提供了大部分应用程序常用的命令和工具:


1) 文件:创建、打开、保存关卡/地图和创建或打开项目。游戏打包也是在这里。这里也有不同的设置和建立配置可以修改,后面会详细说明。

2) 编辑:撤销、恢复、剪切、复制、粘贴或者重复任何选中的对象(或一组选中的对象)。也可以设置偏好,例如自动保存开关和自动保存的时间、改变快捷键、改变测量单位(厘米、米或千米)。项目设置则提供了描述项目的内容设置、项目ID或项目该如何打包,还有该项目支持什么样的平台。更多的设置读者可以自行探索,直到调整到适合自己工作的方式。

3) 窗口:编辑器中的窗口布局是完全可以自定义的,这里可以选择增加或删除哪些窗口。你也可以通过鼠标点击窗口标签,然后拖动,再释放鼠标来手动调整窗口位置。注意,有时候窗口的标签默认是隐藏的,这时候点击左上角的黄色箭头,然后标签就会显示出来了。当你打乱了当前的窗口布局,又不知道如何恢复的时候,可以选择窗口菜单中的重置布局。

4) 帮助:官方教程、文档、论坛、回答中心等常用的超链接都会显示在这里。

三. 工具栏


1) 保存:保存当前的工作进度,可以防止崩溃造成工作进度大量丢失。

2) 版本管理:默认是关闭的。版本管理是协作开发方式,并且它会记录每一次的更改,当你修改了文件,团队中的其他人就会更新修改的文件,并且如果他们修改了文件,你也会被更新文件。通过点击版本控制按钮,选择自己团队的版本控制工具来激活版本管理。

3) 内容:包含了所有资源、代码、关卡和其它游戏开发用到的内容。

4) 商城:一个访问商城的快捷方式。

5) 设置:修改编辑器的设置。例如允许选择半透膜物体、选择组合物体等。引擎的可视化设置,例如分辨率、贴图渲染质量、抗齿锯等都可以在此处设置。

6) 蓝图:蓝图是一个UE4的很重要和很常用的特性。这里可以进入蓝图编辑器。

7) 过场动画:你可以使用过场动画来创建电影艺术。

8) 构建:当你构建你的关卡,引擎可以预计算灯光和可视化数据、产生导航网络和更新几何体。

9) 播放:当你点击播放按钮,在视图中会测试你的关卡和观察是否功能正常。当你点击播放后,会出现暂停、停止、弹出按钮。
  • 暂停:当暂停后,你可以点击继续或逐帧播放。
  • 停止:停止游戏测试,回到编辑模式。

10) 启动:当你的游戏已经完成并且准备发布,点击启动按钮会制作、打包和生成可执行的应用程序文件(这依赖于选择的平台)。

四. 视口

视口位于编辑器窗口中央,这里可以创建和调试你的游戏。将游戏对象都可以放置在这里来创建当前的场景。


观察:按下鼠标左键或右键的同时,你可以使用W、S、A、D来移动到观察的视角。

选择:鼠标点击左键。

在视图上方的是视图工具栏,我们来逐一说明它们:
1) 视口选项:这里可以切换到游戏模式,可以将场景像在游戏中那样展示出来,所以那些音量、隐藏的actors和actor图标都会被隐藏起来。还有沉浸模式,将会以全屏模式显示。还有其他设置选项可以被设置,所以最好自己亲自试试。

2) 视口投影类型:这里有两种视口投影类型,一种是正交投影、一种是透视投影。透视投影符合人的视觉,所以看起来更像3D场景,而正交投影像是将某个轴去掉后的2D平面。

3) 视口渲染模式:设置显示的渲染模式,默认的是带光照模式,将游戏中的灯光显示在视口中。你可以切换到不带灯光模式,就会没有任何灯光了。线框模式,只会显示模型的线框。

4) 显示:设置哪些类型的actor可以显示出来,哪些类型被隐藏。

5) 变换工具:这里有三种变换方式。第一个是平移,第二个是旋转,第三个是缩放。

6) 坐标系统:切换全局坐标系和局部坐标系。如果选中的是全局坐标系,则变换会以世界坐标系的轴为准。如果选中的是局部坐标系,则变换会以物体自身旋转的方向的轴为准。

7) 表面对齐、表面网格对齐、表面网格对齐值:接着的这三个工具涉及到平移的对齐操作。表面对齐的时候,只要两个actor的轴心在底部,当它们靠近的时候就会自动对齐了。网格对齐,是每次移动的时候都会移动网格对齐值大小的值

8) 旋转网格对齐、旋转网格对齐值:类似于表面网格对齐,旋转网格对齐每次旋转都是旋转某个固定的旋转网格对齐值。

9) 缩放网格对齐、缩放网格对齐值:类是于上面两个对齐,每次缩放的时候都是按某个固定的缩放网格对齐值来缩放。

10) 摄像机速度:设置当按下箭头键的时候摄像机移动的速度。

11) 最大化和恢复视口:当你点击右上角的这个按钮的时候,最会在透视视图和三视图+透视视图之间切换(见下图),三视图就是正视图、俯视图和左视图。每个视图都有自己的视图工具栏,你在某个视图中右上角点击一下,然后该视图就会被最大化。


五. 模式



在最左方的就是模式窗口,这里提供了几种不同的模式,根据不同的工作任务,我们可以自由地切换它们:

1) 放置模式:这个是默认模式。这里可以将actor放置到场景中,所谓的actor就是诸如静态模型网格、灯光、触发器、体积等等(actor的概念在其它的游戏引擎常常称为对象或实体)。这里逐一介绍各种actor:
  • 基本:这里包含了非常基本的actor,而且是在游戏开发中非常频繁地使用到的。包括:触发器、摄像头、玩家起始等等。
  • 灯光:灯光面板包含了不同可用的灯光类型。例如点光源,它就像一个电灯泡朝各个方向发出的光。还有平行光,是从无限远的位置发出平行的光线,就像太阳发出的光。
  • 可视化:这个分类包含了影响游戏视觉的actor,例如后期处理体积、大气雾效、贴花等。
  • BSP:Binary Space Partitioning,中文名是二叉分割空间,BSP技术由于在多边形剪切方面表现出色,使得在碰撞检测的时候非常高效。这里包含了一些BSP画刷,例如盒子、锥体、旋转式梯子等等。
  • 体积:这个分类是包含了一些具有不同属性的actor,例如KillZ体积,当任何actor进入它的时候都会被摧毁(包括角色actor),所以用它来制作陷阱就非常方便了,如果你想查找某个特殊的actor,你可以在上方的搜索栏进行查找。

2) 绘制模式:绘制模式允许你来绘制和调整颜色和贴图到一个静态网格里。你可以在这设置画刷大小、半径、强度等等。需要注意的是,当你绘制的时候需要选中actor来避免画到其它actor。

3) 地形模式:你可以直接在引擎里创建一种地形,而非从外部导入地形。你可以选择自己想要的维度等等,然后按底部的创建按钮,接着你可以雕刻或绘制来完成你的地形。想要删除地形,先切换到放置模式,然后选中地形,按Delete键来删除它。

4) 植被模式:你可以在地形或其它静态网格使用画刷或橡皮擦,画出很多像树、草、石头等东西。如果要一个个来放则是很繁琐的,通过使用画刷可以瞬间画出大量的植被。

5) 几何体编辑模式:之前提到过BSP提供了一些基本的模型画刷,如果你想要自定义模型画刷,你可以在这里进行编辑。

六. 世界大纲视图

世界大纲视图有层次地展示了在场景中的所有actor。


在世界大纲视图你可以进行这些操作:
1) 新建文件夹:你可以通过文件夹管理使得actor整洁有序,也可以通过文件夹来选中一组actor(右键文件夹,选择-所有子项)。
2) 隐藏actor:在actor和文件夹前面有一只眼睛,通过点击它来隐藏/显示该actor或文件夹下的所有actor。
3) 附加actor:通过拖动一个actor到另一个actor,可以形成附加关系。如果你移动父关系的actor,所有的子actor都会跟着移动。如果移动子actor,父actor就不会跟着移动。需要注意的是,这只能通过世界大纲视图完成,在视口中移动父actor是不会影响子actor的。

左下角显示的是有多少个actor,右下角显示的是设置视图过滤方式的选项。

七. 内容浏览器

所有游戏资源,包括材质、贴图、网格、蓝图、音频文件都会在这里显示出来。这里是导入、组织、观察甚至创建游戏资源的地方。


在顶部有三个图标,下面逐一介绍它们:
  • 添加新项:创建新的资源,例如材质、粒子系统、蓝图等等。
  • 导入:导入内容到项目文件中。
  • 保存所有:如果在内容浏览器创建或修改资源,点击保存所有来保存这些工作。

然后接着下面有个搜索条,可以输入要搜索的资源名字来快速查找它们。右上角的锁图标可以锁住所有“在内容浏览器查找”的请求。所谓“在内容浏览器查找”就是在视口中右键actor的时候,弹出菜单中选择“在内容浏览器查找”就会将查找到的对应资源显示在内容浏览器中。如果锁住了,则不会在内容浏览器中显示出来,而是打开一个新的窗口显示。

在下方左侧有个源面板,源面板包含了你的项目中收集的所有文件夹。在下方右侧,是资源视图,显示了从源面板中选择的资源和子文件夹。在上方有个过滤器,可以指定你想要查看的资源类型。右方就是资源搜索栏。在底部左方你可以看见当前选择的文件夹有多少个资源,底部右方可以选择视图选项,选择你观察项目的方式,例如是平铺块、列表还是列显示方式。

八. 细节

在细节面板,你可以看见和修改当前选择的actor属性。


在顶部,你可以看到选择的actor的名称(图中是Chair)。你可以设置自己喜欢的命名。在右方,就是一个锁按钮。默认是解锁状态,当锁住的时候,细节面板会锁定当前的属性和细节,如果你选择另一个actor也不会改变。

下方的搜索栏可以搜索你想查看的属性,接着是属性矩阵按钮,这会打开一个属性矩阵窗口。再右方是显示过滤器,你可以选择折叠/展开所有的种类、只显示修改的属性或显示高级属性。

在名字的下方,有两个按钮,添加组件和蓝图/添加脚本。添加组件,可以添加例如静态网格、形状基本几何体(正方体、球体、圆柱和圆锥体),灯光actor等。这跟世界大纲视图中的附加Actor类似。接着,你可以转换选择的actor到蓝图类。蓝图类是作为一个组件,伴随着代码(Unity等一些其它引擎中,称为Prefab预制件)。随后的章节会详细介绍它。

最后,下方是属性区域,这里显示选择的actor属性,例如位置、旋转、缩放、当前的材质、添加和移走材质等等你可以修改的内容。


转自:http://www.52vr.com/article-556-1.html

2020-02-26 11:33:11 u014086851 阅读数 14
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2706 人正在学习 去看看 杨石兴

在UE4中创建关卡很容易,并且周围都有不错的UI可以为您提供便利。 在本小节中,我们将概述基本的编辑器用法,并描述在启动第一个项目后如何构建第一个关卡。

  • 准备工作
    完成上一个小节UE4 –第一个工程。 构建完项目后,我们可以继续创建关卡。
  • 如何做:
    1. 开始新项目时设置的默认关卡将包含一些默认的几何图形和布景。 但是,您无需从入门者入手。 如果您不想从中进行构建,则可以将其删除或创建新关卡。
    2. 要创建新关卡,请点击“文件| 新建关卡…”,然后选择创建一个具有天空球(默认)或不包含天空球(空关卡)的关卡。
      tips:如果选择创建没有天空球的关卡,请记住,必须向其添加灯光才能有效地添加到该关卡中。
    3. 如果在项目的创建内容(或其他一些内容)上加载了Starter Content,则可以使用内容浏览器将内容拉入关卡。 只需将内容实例从“内容浏览器”拖放到关卡中,然后保存并启动它们。
    4. 使用“模式”面板(“窗口 | 模式”)将一些几何图形添加到您的关卡中。 确保单击灯泡和立方体的图片以访问可放置的几何图形。 您也可以通过“模式”选项卡,通过单击“模式”选项卡左侧的“光照”子选项卡来添加灯光

      warning:“模式”面板包含两个用于进行关卡构造的有用项目:一些要添加的示例几何体(立方体和球体等)以及一个充满灯光的面板。 尝试这些并尝试开始布置您的关卡。

文章标题

阅读数 91

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