http://blog.sina.com.cn/s/blog_7c5fd2e90101ku0j.html
使用Unreal4引擎前需要安装 或者编译引擎。 下面就为同学们介绍下 Unreal4 安装配置。
一. 在Win7下安装Unreal4
在Win7下安装Unreal4需要以下几个步骤:
1.
打开“控制面板”的“程序和功能” 检查是否已安装
Microsoft Visual C++ 2010 Redistributable ,请同学们先卸载掉,否则下面安装
DXSDK_Jun10时会出现
Error Code:S1023的
错误。
(卸载完成一定要重启电脑 不然还会出现
Error Code:S1023的错误
)
如果没有安装的同学请继续下一步
2. 安装
DXSDK_Jun10 如果出现下图所示错误Error Code:S1023 请先完成第一步。
3. Win7下还需要安装 Windows 7 SP1(Service Pack 1) KB976932 补丁(windows6.1-KB976932-X64.exe)补丁可以从微软上下载(大概903MB)
附下载地址(
http://windows.microsoft.com/zh-cn/windows7/learn-how-to-install-windows-7-service-pack-1-sp1
)
4. 安装完Windows 7 SP1(Service Pack 1) KB976932 补丁后就接下需要安装10以上版本的
InternetExplorer浏览器。大概就是ie11_windows6_1_x64_zh_cn.exe 的一个安装程序。
附下载地址 Internet Explorer 11(
http://windows.microsoft.com/zh-cn/internet-explorer/ie-11-worldwide-languages)
5. 以上4步完成后就可以安装高端大气上档次的VisualStudio2013,也可以选择安装VisualStudio2012看个人喜好但是VisualStudio2013是Unreal4Engine引擎开发IDE所以UE4对VS2013支持的最好,还有很多插件呦。
6. 最后一步就是安装UE4了,直接安装UnrealEngineInstaller-1.0.0-2039063.msi文件。桌面或者安装路径的Unreal Engine\Launcher\Engine\Binaries\Win64\UnrealEngineLauncher.exe 可以直接运行啦。
7. UnrealEngineLauncher是一个引擎用户验证登陆器,使用了增量更新机制(哈哈 做游戏的更新机制已经给大家展现出来,具体能有多强大还需要好好研究一下
)。在(
https://www.unrealengine.com/blog/welcome-to-unreal-engine-4)Unreal4官网注册一个账号就可以登录。
我在淘宝花了120大洋找人代付了1个月的会员,还购买了一个月的GreenVPN。准备好好研究下喽
会员登陆后还需要更新一个4.0.2的包大概7个G左右(嘿嘿 知道为什么买VPN了吗 - -!)
二. 在Win8/Win8.1 下安装Unreal4
1. 依然首要问题安装
DXSDK_Jun10
时会出现
Error Code:S1023
的
错误。只要按照Win7下安装的第一步解决就OK了,一定不要忘记卸载完要重新启动计算机呦。
2. 安装Visual Studio 2013或者Visual Studio 2012,个人建议选择VS2013许多新特性很适合Unreal4,而且UE4对Visual Studio 2013支持的比较好。
2. 就可以直接安装UnrealEngineInstaller-1.0.0-2039063.msi文件了。
三. 其他方式安装Unreal4 Engine
算是小福利喽,不想付费又对UE4感兴趣的同学可以看下面方法,但是不确保链接总是会有效喔。
Unreal4源码包下载链接(
http://pan.baidu.com/s/1qWCYkz)
引擎资源包(一)下载链接(
http://pan.baidu.com/s/1eQzfwo)
引擎资源包(二)下载链接(
http://pan.baidu.com/s/1dD5Tcn)
1. 下载好Unreal4源码后先将压缩包解压缩,得到UnrealEngine-4.0.1-release文件夹,然后需要把引擎资源包(一)和引擎资源包(二)下载后解压到UnrealEngine-4.0.1-release文件夹下覆盖相应目录文件。
2. 安装DXSDK_Jun10.exe,
如果
出现下图所示错误
Error Code:S1023 请同学们看一下上面Win7安装Unreal4的第一步骤。
3. 安装完DXSDK后,双击UnrealEngine-4.0.1-release目录下的GenerateProjectFiles.bat文件,等待差不多1分钟后点击目录下的Ue4.SLN(VisualStudio2013的工程文件)
4. 然后就可以用VisualStudio2013打开工程文件可以进行编译了,编译时间会很长根据每位同学机器配置会有差异基本上15分钟就可以搞定,请同学们耐心等待。编译完成后就可以在 \UnrealEngine\Engine\Binaries\Win64目录找到UE4Editor.exe等运行文件啦。
小结:官方说现在还是未优化版本,稳定版请等待几个月会推出4.1版本(版本更新说明已经在我博客上贴出来 感兴趣的可以去看下
),虚幻4运行配置较高,大家赶紧去体验吧。
这次主要是简单介绍下Unreal4引擎使用前的配置 和 VisualStudio2013调试插件的配置
1. 在Unreal4安装目录下找到路径为
Unreal Engine\4.0\Engine\Extras 的文件夹。如下图:
可以很清晰的看到有 Android ,FX_tools , Maya_AnimationRiggingTools , MayaVelocityGridExporter , UnrealVS 与 VisualStuaioDebugging 这6个插件。
Android: 这个文件夹里主要是 安装AndroidSDK AndroidNDK 和 JDK 安装这些主要是为了在Win7平台下用Unreal4引擎直接打Android的apk包使用。
FX_tools: 这个文件夹里主要是3DMax2012的插件。
Maya_AnimationRiggingTools和MayaVelocityGridExporter: 这两个文件夹是Maya导出插件和编辑器工具
UnrealVS: 这个文件中有VS2012和VS2013两个版本的UnrealVS.vsix插件,只需要双击就可以安装了。 附图:
VisualStudioDebugging: 文件夹下有一个UE4.natvis文件(
.natvis 文件是带 .natvis 扩展名的 .xml 文件),同学们需要把这个文件拷贝到 安装
VisualStudio2013的按照目录下,路径为
Microsoft Visual Studio 12.0\Common7\Packages\Debugger\Visualizers的文件夹中。 这样同学们就可以再
VisualStudio2013中的调试栏的监控里看到 Unreal4引擎自定义的特殊类型的值啦
。
附图:
2. 为什么建议各位同学使用
Visual Studio 2013呢,不仅仅是因为Unreal4引擎对VS2013支持的最好。在Unreal4中还有比较特殊的用途就是,当你想为你的项目添加C++代码的时候你需要点击File菜单中的Add Code to Project按钮。 下面附张图:
下面这张图 警告同学们啦,必须需要使用
Visual Studio 2013才能创建新的Class。
大概就介绍到这里啦。
对于大型游戏MMORPG游戏或是3D街景(虚拟现实)还有大型无缝地图都需要地图啊,关卡动态加载的机制来达到让用户感觉自己一直是在漫游,而不会出现Loading(读条),卡界面等情况。当然除非是垮区域无法依靠关卡和关卡中之间的关系做处理。
UnrealEngine4 作为一个多年处于世界前矛的商业引擎,自然而然也为大家考虑到这个这种硬性需求。UnrealEngine4 中的动态加载大概分为3种。
首先需要明确下几点概念。因为再同学们信息会等的前提下才会更有利于理解和相互交流。好了,不瞎扯了进入正题。
1.地图(Map):地图这个概念在UnrealEngine4中基本上所示虚拟出来。当然我们编译完一个场景后会保存到自己的工程目录下 如:XXXX\Content\Maps\ 保存的文件名叫做.umap。一个工程下可以有很多很多.umap文件,但是我们需要注意到,我们在单独保存场景时编辑器都是基于Level操作的。代码中只有一个函数是关于地图[UEngine::LoadMap]。 如下图:
2.关卡(Level):关卡这个概念应该是在UnrealEngine4最常用使用的,在UE4编辑器中还有一个单独Levels编辑器。 如下图:
3.世界(World):World这个概念之前在UnrealEngine3中一直跟地图的概念差不多,World下面会有很多的Levels还有八叉树场景管理器,以及一些寻路啊,对Level和Actor的管理函数。当然现在也差不多,不过没有看见八叉树,多了一种LevelActor的类,SpawnActor中创建对象为"ConstructObject"之前创建对象另一个函数需要Outer和Owner的"DuplicationObject"。
言回正传:UnrealEngine4引擎提了我们有三种动态加载的方法,下面一一介绍。
一. 通过使用LevelStreamingVolume的方法:
通过Modes窗口下的Volumes找到LevelStreamingVolume,拖动到编辑器中让它覆盖住同学们两个Level,调节LevelStreamingVolume的StreamingUsage属性(比如有加载后锁定,加载,加载后显示等)。
当我们的Pawn进入到这个LevelStreamingVolume后关卡就会对应的加载啦。 如图:
加载类型设置属性图例
二. 通过使用BluePrint的方法:
通过打开关卡的Blueprints使用蓝图完成动态加载。那么在Blueprints中完成动态加载我们需要用到几个节点分别为 LoadStreamLevel和UnloadStreamLevel。 如图:
LoadStreamLevel节点
UnloadStreamLevel节点
特别要注意的是LoadStreamLevel节点需要在MakeVisibleAfterLoad打勾,不然不会显示的呦。第二个暴露变量ShouldBlockonLoad打上勾会,不会被UnloadStreamLevel节点卸载(同学们自行按照需求选择呦)。还有一定要在Leves编辑器中把修改动态加载方法中的[
总是加载]改成[
蓝图]喔,不然通过Blueprints无法控制动态加载的。
三. 通过写代码的方式加载
在需要切换动态加载关卡的时候,调用[UGameplayStatics::LoadStreamLevel]函数来加载想要使用的关卡。
大概流程是创建一个FStreamLevelAction,这个Action回去读暴露参数的包遍历所有Level关系找到指定关卡,然后ActivateLevel这个关卡激活的时候会有加载或者卸载关卡。
PS:
这几天一直在回忆之前使用UnrealEngine4学过的知识,也同时在看UnrealEngine4的新代码,如果出现概念混淆的情况或者叙述错误的情况,请各位同学指出并与我交流
。 有机会请你们吃饭,喝咖啡。
C++和蓝图
概述
蓝图可以继承C++类,从而使得程序员可以在代码中创建新的游戏性类,而关卡设计人员可以使用蓝图来继承该类并对其进行修改。 有很多种修饰符可以改变C++类和蓝图系统间交互方式,其中某些修饰符会在本示例中突出介绍。
类设置
在类设置的第一部分中,使用C++类向导创建一个名称为LightSwitchBoth 的类。
LightSwitchBoth类中的大部分代码设置都和仅使用C++的LightSwitch示例类似。尽管您可以让一个蓝图继承LightSwitchCodeOnly类,
但蓝图图表并不能访问该类中创建的组件、属性及函数。该示例将使用 UPROPERTY() 和 UFUNCTION() 修饰符,这两个修饰符使得LightSwitchBoth作为继承它的蓝图的模板。
您会发现首先参考下 仅使用C++的LightSwitch示例是有用的,这样您可以看下如何设置头文件及源文件 来创建LightSwitchComponent、SphereComponent、DesiredBrightness属性及OnOverlap函数。
这个头文件是从 仅使用C++的LightSwitch示例 改编而来,添加了以下功能:
PointLightComponent和SphereComponent是BlueprintReadOnly(仅蓝图可读的),并且将显示在 我的蓝图 选卡中的 Switch Components(切换组件) 类目中。
OnOverlap现在是一个BlueprintNativeEvent,将会显示在 我的蓝图 选卡中的 Switch Functions(切换函数) 类目中。
DesiredBrightness是BlueprintReadWrite(蓝图可读写的),将显示在 我的蓝图 选卡中的 Switch Properties(切换属性) 类目中。
DesiredBrightness现在是EditAnywhere(随处可编辑的),而不是VisibleAnywhere(随处可见的)。
UCLASS() 宏有个 Blueprintable 修饰符。在这个示例中,该修饰符不是必须的,因为LightSwitchBoth直接继承Actor,而Actor是Blueprintable(可蓝图化的),所以LightSwitchBoth会继承该修饰符。
加上 UPROPERTY() 和 UFUNCTION() 宏中的额外修饰符,LightSwitchBoth类的头文件如下所示:
LightSwitchBoth.h
// Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "LightSwitchBoth.generated.h"
UCLASS()
class ALightSwitchBoth : public AActor
{
GENERATED_UCLASS_BODY()
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Switch Components")
TSubobjectPtr PointLight1;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Switch Components")
TSubobjectPtr Sphere1;
UFUNCTION(BlueprintNativeEvent, Category="Switch Functions")
void OnOverlap(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Switch Properties")
float DesiredBrightness;
};
在LightSwitchBoth的源文件中,构造器仍然是一样的。但是,需要对 OnOverlap 函数做一点修改。这个函数现在是一个BlueprintNativeEvent。这意味着 在继承这个类的蓝图中,可以放置一个覆盖 OnOverlap 的事件,当正常调用该函数时会执行此事件。如果该事件不存在,那么则是执行那个函数的 C++实现。要想使这个设置正常工作,该C++函数需要重命名为 OnOverlap_Implementation 。稍后在本示例中将介绍这个蓝图设置。对 OnOverlap 函数 进行了修改后,LightSwitchBoth 的源文件如下所示:
LightSwitchBoth.cpp
// Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
#include "BasicClasses.h"
#include "LightSwitchBoth.h"
ALightSwitchBoth::ALightSwitchBoth(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
DesiredBrightness = 15.0f;
PointLight1 = PCIP.CreateDefaultSubobject(this, "PointLight1");
PointLight1->Brightness = DesiredBrightness;
PointLight1->bVisible = true;
RootComponent = PointLight1;
Components.Add(PointLight1);
Sphere1 = PCIP.CreateDefaultSubobject(this, TEXT("Sphere1"));
Sphere1->InitSphereRadius(250.0f);
Sphere1->OnComponentBeginOverlap.AddDynamic(this, &ALightSwitchBoth::OnOverlap); // set up a notification for when this component overlaps something
Sphere1->OnComponentEndOverlap.AddDynamic(this, &ALightSwitchBoth::OnOverlap); // set up a notification for when this component overlaps something
Sphere1->AttachParent = RootComponent;
Components.Add(Sphere1);
}
void ALightSwitchBoth::OnOverlap_Implementation(AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
{
if ( OtherActor && (OtherActor != this) && OtherComp )
{
PointLight1->ToggleVisibility();
}
}
当创建类时,新的 UCLASS() 、UFUNCTION() 和/或 再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://www.cnblogs.com/captainbed