2018-01-31 23:03:17 ZJU_fish1996 阅读数 2651
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

        最近开始研究unreal里的关卡切换,中途绕了不少弯路,特此记录一下。

        一开始我一直按照unity中的场景来理解关卡。后来发现这两者并不是完全对等的,关卡更像是一个区域,所以一个场景里有多个关卡也是合理的。

        1.OpenLevel

        一开始使用了一个OpenLevel的接口。

        (1) 在蓝图中,直接搜索,拖拽出来即可,一般情况下只需要填一个参数:关卡的名称。不需要带路径。

      

        (2) 在代码中,该函数是UGameplayStatics类里的一个静态函数,具体定义如下:

          

     头文件为:#include "Kismet/GameplayStatics.h"

     先试着用了一下这个接口,功能正常,但是有一个严重的问题,速度特别慢,我的场景有一点复杂,加载时间就花费了40多秒,这是无法忍受的。所以我就开始寻找有没有后台异步加载场景的接口。

      2.LoadStreamLevel

     后来我又找到了一个满足要求的接口LoadStreamLevel。

     (1) 在蓝图中,右键搜索即可拉出该接口:

     

         这里有两个可勾选的参数,可由名字直接看出它的含义,在这里,根据需求,我勾选了加载完成后显示,以及加载过程中堵塞(此时用户只能等待过图)。

     (2) 在代码中,这个函数同样定义在UGameplayStatics类里(还有一个对应的Unload版本)

       

       开始用这个接口没有任何反应,一直搞不清楚是哪里的问题,后来无意中发现要实现流关卡切换,首先要把所有需要的关卡都放到关卡编辑器中,而OpenLevel则是不需要的。

       具体可在菜单栏-窗口中点击关卡(level),在弹出的界面中,选择Add existing来添加已存在的关卡。

        

     此时场景中会显示所有关卡,可以点左边的眼睛来控制显隐。这时候,场景就基本在3秒内加载完毕了。

     实际上可以看出,所有可以切换的流关卡都是作为永久性关卡的子关卡存在的。


        3.关于gamemode

        gamemode,也就是游戏模式,在这里我们可以指定这个游戏的基本属性。

        我这里有一个比较特殊的情况,就是我使用了一个插件,这个插件有着自己的一套gamemode,我又额外做了一个关卡,用了另一套gamemode,现在需要在这两个关卡中做一个切换。

        在使用loadlevel接口的时候,这个切换毫无问题,我只需要在世界设置界面,给第一个关卡设置一个gamemode,再打开另外一个关卡,重新设置一个gamemode就可以了。但是改用了loadstreamlevel后,gamemode就无法切换了,哪怕我在虚幻编辑器中动态修改也没有反应。在这一块我查了大量资料,才确认了一个事实:

        在unreal中,一个关卡只能对应一个gamemode。

        从某种程度上来说,这是合理的,每个世界都有着它特有的规则,如果存在两套规则,就会发生混乱。

        而对于loadstreamlevel而言,其他的关卡是作为子关卡而存在的,所以实际上它们依然被认为是一个关卡整体,这整个关卡的gamemode,取决于根关卡,也就是永久性关卡的gamemode。

        最后的解决方案,就只能魔改插件代码再编译,强行把我的gamemode逻辑塞进了插件的gamemode代码中。

2018-04-08 09:45:23 qq_36329082 阅读数 229
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

日常扯淡开头

是的,头号玩家真好看,我也想做炫酷的虚拟世界哦;以前玩过unity,所以一些东西理解起来很容易,入门unreal4也很快(当然只指基本关卡操作,其他的还没开始看),写一波笔记记录一下;


介绍

这里写图片描述
如图;
区域1
放东西的栏目;
可以发现旁边有许多东西:
基本:不解释了
光照:太阳光,直射光等,光线是体现真实的秘诀;
Cinematic:说实话没用过,下次学会了再更;
视觉效果:雾气之类的
Geometry:翻译一下,集合体,与之相对的是静态网格物体(static mesh),这个是可以控制很多参数的,而静态网格物体只能变换大小;
体积:暂没用过-_-
所有类:待更新-_-

水过1,开始
区域2
这就是打游戏的区域,上面还有一个播放,点播放,你做的东西就能运行了,动画会播放,游戏能玩,其他的按键-_-你懂的,等更新;
透视图:透视图这里能调整观察方式,有个TOP选项可以俯视场景,可用于对齐拼接比较方便,当然调整坐标当然最万无一失;
右边的几组小图标分别是:
移动,旋转,大小变换,对应快捷键为:W E R;
右边那个是snap,三种变换的snap,对齐选项右边的数字是刻度,每次变换的单位;

区域3
区域3名字十分浅显了,场景中的每一个物体在世界大纲里都有自己的标签;这个大纲有点project里的文件结构的意思;

区域4
内容浏览器;
可以导入素材,也可以直接在他的文件夹里扔东西出来,记得静态网格物体吗,可以在这个导入按钮里导入进来,然后像区域1一样拖进去;
创建项目的时候(不放图了)有个是否具有初学者选项,带的话就会提供给你很多素材,材质,模型啊;
顺带一提,自己创建的关卡也是存在这;
如果说区域3像项目结构(其实是关卡qia结构)
那区域4就是真正的项目结构;

区域5
区域5-细节
区域2中点击物体,就会在区域5出现他的细节,这些细节包括很多操作,就像造物,用泥糊出了形状,这个就是赋予他灵魂的操作,包括添加丰富的组件,调整大小,更改位置,材质,以及蓝图类;


end

Q 下降
E 上升
F 聚焦
W 移动选定
E 旋转选定
R 大小(变换)选定
CTRL 多个同时选定
ctrl + shift +g 开启/取消 组合功能
ctrl + g 组合(和PPT一样-_-)
end 落地(如果下面有地的话)
sub 挖洞(细节里设置)

有了以上,做个咸鱼关卡应该一点问题没有;
推荐丁树凯泰课;

2014-09-19 22:24:29 shangguanwaner 阅读数 9902
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

默认的,UE4,会以AGameMode中设置DefaultPawnClass对象中摄影机作为默认摄影机。有时候我们想要一个全局的摄影机对场景进行观察,这就需要重新创建一个摄影机,并在这两个摄影机直接切换。下面看下如何实现。

在APlayerController类中,有一个SetViewTarget方法,参数是一个AActor指针,就是实现此功能的。因为参数必须是AActor,即必须是AActor中包含的Camera组件才有效,所有,先创建一个AActor对象。

FreeCameraActor.h

UCLASS()
class NANTOPDOWN_API AFreeCameraActor : public AActor
{
GENERATED_UCLASS_BODY()


public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera)
TSubobjectPtr<class UCameraComponent> TopDownCameraComponent;


UFUNCTION(BlueprintCallable, Category = "View Target")
void ChangeViewTarget();


virtual void BeginPlay() override;

private:
AActor* OldActor;
};


ChangeViewTarget()方法提供给Blueprint调用,用于在Character的Camera和FreeCamera之间切换。


FreeCameraActor.cpp


AFreeCameraActor::AFreeCameraActor(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
TopDownCameraComponent = PCIP.CreateDefaultSubobject<UCameraComponent>(this, TEXT("TopDownCamera"));
this->RootComponent = TopDownCameraComponent;
OldActor = NULL;
}


void AFreeCameraActor::ChangeViewTarget()
{
AActor* pActor = this->GetWorld()->GetFirstPlayerController()->GetViewTarget();
if (pActor != OldActor)
{
this->GetWorld()->GetFirstPlayerController()->SetViewTarget(OldActor);
}
else
{
this->GetWorld()->GetFirstPlayerController()->SetViewTarget(this);
}
}


void AFreeCameraActor::BeginPlay()
{
Super::BeginPlay();


OldActor = this->GetWorld()->GetFirstPlayerController()->GetViewTarget();


this->GetWorld()->GetFirstPlayerController()->SetViewTarget(this);
}


在Editor中创建一个从AFreeCameraActor继承的Actor,并拖放到场景中去。可以看到一个包含了摄影机的对象。然后编辑Level Blueprint,加入脚本代码



Play场景,按下1键,就能看到摄影机在character和刚才新建的摄影机间进行切换了。

2016-10-18 17:16:06 qq_20309931 阅读数 2103
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

Unreal Engine4 C++ 动态加载Level(关卡)

今天研究了下如何使用代码来加载编辑好的关卡,现在已知的是以下两种方式:


  • 使用OpenLevel方法
UGameplayStatics::OpenLevel(GWorld, "YourLevel", false, "");

OpenLevel会调用SetClientTravel,会断开所有连接的客户端并像客户端一样行动,会丢弃所有的状态信息。


  • 使用ServerTravel方法
GetWorld()->ServerTravel(FString("/Game/Maps/YourLevel"));

使用ServerTravel时,将保留所有PlayerController,PlayerState,GameMode和GameState实例。
ServerTravel将首先将每个人加载到一个“转换关卡”,默认是空的,然后它将所有人都加载到目标关卡。


本文主要介绍的方法为OpenLevel


1.添加依赖

2015-07-29 12:07:25 Neil3D 阅读数 5221
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

大型3D游戏的关卡(或者说副本、战场)的制作有一些难点,主要是:

  • 要求制作人员有很好的空间感,包括整体布局、对象的比例关系;把握不好的话,不单影响美观,更影响玩家的体验;
  • 关卡制作是一个比较综合的工作:需要策划、美术非常好的沟通协调,有时也需要程序添加一些逻辑功能。老外有Level Designer,而国内的Designer主要负责写文档,画平面设计图,这就经常出现来回返工。特别是在一些PVP战场类的副本的制作,玩法对路线的长短、一些功能建筑的位置等细节要求都非常高的情况下,往往要不断的测试、调整才能确定最终方案;
  • 高品质的关卡制作成本非常高,一个像样的关卡的成本够买一辆奔驰应该没问题;可是在实际的项目中,经常看到奔驰、宝马就无奈的被丢弃了,就像丢垃圾一样。
以上只是说的“制作”环节中的难点,还没包括所谓的关卡设计:玩法设计、美术概念设计等。总之,关卡要做好,不容易。

今天翻阅UE4的Sample的时候,看到一个“Leveldesign_Workflow”的例子,挺好的,可视化的演示了“太阳神殿”这个DEMO场景的“制作”过程。这个关卡使用了4次迭代,完成最终效果。这样一个工作流程,非常值得借鉴,特别是关卡快速模型的建立和验证,可以降低返工、浪费的风险。

1st Pass: Prototype



在UE4中,可以使用Geometry Brush或者简单的Cube、Spahere等简单几何体,快速的建立出关卡的大致布局。不同区域的空间感、对象的比例关系、基本的光照,都要建立起来;如果有一些游戏逻辑的话,在这个阶段也要开发出来。这阶段的目标是Playable,要真实能测试。经过反复测试、调整,在美观、游戏性上都过关之后,再走下一步。

2nd Pass: Meshing



在原型过关之后,美术就可以按照概念设计和原型中的比例来制作模型和贴图了。模型、贴图一般在3DS MAX或者MAYA等第三方软件中制作,做好之后,导入引擎,并替换到关卡之中。
顺带说一下贴图的问题:模型的大小也很重要,老外制作关卡的时候,对于贴图的精度都把握的非常好:每平方英寸多少切图像素,都是在项目规范中定义的。“在一个贴图粗糙的地面上摆着一个精致的花瓶”vs“在粗糙的地面上摆一个同样粗糙的花瓶”,两种对比,前者更破坏玩家的代入感,画面会显得非常非常的“计算机”。

3rd Pass: Ligting



对于次世代来说,没有光,再好的戏也出不来。在这个环节要仔细调整灯光设置和Post Process,尽量达到最终效果。配合整体范围的营造,还可以添加一些粒子效果,例如火把上燃起的火星等。

4th Pass: Polish



最后是抛光,调整、增加细节,营造某种特定氛围或者生活气息之类的。

视频链接如下点击打开链接

博文 来自: sinat_23340845

UE4中切换关卡

阅读数 15064

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