找回密码
 立即注册
查看: 341|回复: 0

Unreal4 入门

[复制链接]
发表于 2023-4-12 09:49 | 显示全部楼层 |阅读模式
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 请先完成第一步。
附下载连接DXSDK_Jun10(下载地址:http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe







    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示例是有用的,这样您可以看下如何设置头文件及源文件 来创建LightSwitchComponentSphereComponentDesiredBrightness属性及OnOverlap函数。
这个头文件是从 仅使用C++LightSwitch示例 改编而来,添加了以下功能:
PointLightComponentSphereComponentBlueprintReadOnly(仅蓝图可读的),并且将显示在 我的蓝图 选卡中的 Switch Components(切换组件) 类目中。
OnOverlap现在是一个BlueprintNativeEvent,将会显示在 我的蓝图 选卡中的 Switch Functions(切换函数) 类目中。
DesiredBrightnessBlueprintReadWrite(蓝图可读写的),将显示在 我的蓝图 选卡中的 Switch Properties(切换属性) 类目中。
DesiredBrightness现在是EditAnywhere(随处可编辑的),而不是VisibleAnywhere(随处可见的)
UCLASS() 宏有个 Blueprintable 修饰符。在这个示例中,该修饰符不是必须的,因为LightSwitchBoth直接继承Actor,而ActorBlueprintable(可蓝图化的),所以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


转载于:https://www.cnblogs.com/skiwnchiwns/p/10190280.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-2 03:54 , Processed in 0.095788 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表