2019-08-24 17:22:25 weixin_43989825 阅读数 33
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

前言

刚接触UE4没几天,从头开始实现了画轨道的功能,自己记录一下实现过程以及遇到的问题。

环境配置

因为电脑上先安装的VS2017,后来才安装的UE4,所以在UE4用到VS的时候有些问题,打不开VS,后来发现是一些需要的组件没有安装,所以搜一下UE4+VS2017配置的教程,看看安装的时候需要哪些组件,再在VS里添加上就好了。

实现步骤

  1. 文件–新建项目–空白蓝图,随便起了个项目名 draw。在这里插入图片描述
  2. 文件–新建C++类,继承Actor,然后next,命名自己随意写,我的是 drawlineActor,完成后会打开VS,有.h和.cpp文件。
  3. 在.cpp文件的BeginPlay中添加以下代码,在这里只是试验一下功能,具体在哪里,看自己需求。
    TArray<FBatchedLine> lines;  
	TArray<FVector>  mVertexes;
	mVertexes.SetNum(4);  //需要先设置个数,不然会报错,之前报了些乱七八糟的错误,经大神指点才知道需要设置
	mVertexes[0].X = -180.f;  //这里自己随意设置数值,为了试验功能而已
	mVertexes[0].Y = 0.f;
	mVertexes[0].Z = 32.f;
	mVertexes[1].X = -215.f;
	mVertexes[1].Y = -120.f;
	mVertexes[1].Z = 32.f;
	mVertexes[2].X = -260.f;
	mVertexes[2].Y = -120.f;
	mVertexes[2].Z = 30.f;
	mVertexes[3].X = -200.f;
	mVertexes[3].Y = 40.f;
	mVertexes[3].Z = 40.f;
	ULineBatchComponent* const LineBatchComponent = GetWorld()->PersistentLineBatcher;
	for (auto i = 0; i < mVertexes.Num() - 1; i++)
	{
		FVector start = FVector(mVertexes[i].X, mVertexes[i].Y, mVertexes[i].Z);
		FVector end = FVector(mVertexes[i + 1].X, mVertexes[i + 1].Y, mVertexes[i + 1].Z);
		FBatchedLine line = FBatchedLine(start,
			end,
			FLinearColor(1, 0, 0, 1),  //设置颜色、透明度
			0, // 设置显示时间。设为0,表示永久显示
			0.3,
			4
		);
		lines.Add(line);
	}
	LineBatchComponent->DrawLines(lines);
  1. 添加以上代码后,肯定报错了,因为没有添加相应的头文件。现在在.h中添加相应头文件,但是需要保证generated.h在最后。
#include "Math/Vector.h"
#include "Components/LineBatchComponent.h"

在这里插入图片描述
虽然这几个地方会标红,但是可以忽略,待会编译运行之后就没了。我也不知原因。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
5. 在UE4中,选择新建空白蓝图类,点击之后,在所有类中,搜索自己创建的类,我的是 drawlineActor。

在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/20190824165220710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk4OTgyNQ==,size_16,color_FFFFFF,t_70
6. 创建之后,在这里找到他,并将它拖到场景中,任意位置就可以。
在这里插入图片描述
7. 将VS中的代码进行生成,结束后在UE4点击编译,结束后,播放。
在这里插入图片描述

清除线,重新画

因为项目需要,所以得不定时的把之前的线清除掉,重新根据新的数据画线,经过很多尝试,才知道是这样清除。最后加这两行代码。

LineBatchComponent->BatchedLines.Empty();
lines.Empty();

代码调试

期间遇到很多问题,比如线画不出来等,所以就需要调试代码,调试步骤见以下链接,讲的挺清楚的。
UE4–VS代码调试模式

2017-02-08 14:23:00 weixin_34072159 阅读数 22
  • 从这里开始虚幻4-Editor介绍 v4.18

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

    2393 人正在学习 去看看 杨石兴
AkAudio.Build.cs通过UBT实现逻辑相关代码生成,Wwise的第三方插件库通过AddWwiseLib()添加,Unreal Engine的BuildConfiguration全局参数作为条件在这里决定Wwise库的版本,用于发行的Release版本库是关闭连接调试功能的。
 
WwisePicker通过UE的Slate框架实现一个简易的Wwise Event浏览器,可以在Unreal Editor内读取Wwise工程的数据,进而可通过拖拽操作生成 AkAudioEvent 和AkAuxBus类资产(拖拽操作的实现在WwiseEventDragDropOp)。
 
AkAudioBankGenerationHelpers类的实现 在Unreal Editor中生成Bank数据,通过最终调用Wwise命令行工具实现,可以添加flag来自定义生成各阶段的相关逻辑,同时这里的生成路径是hard coding的,可优化为暴露的用户自定义配置。
 
AkComponentVisualizer类的实现 可视化3D声音的衰减半径,前提条件是Bank数据包含JSON格式的元数据,且要包含Max attenuation数据,在Wwise编辑器的Project Settings - SoundBanks页面可设置。
 
各个AssetTypeActions类实现 Unreal Editor 内Ak资产相关菜单操作功能,各个Factory类通过工厂模式实现实例创建相关逻辑。
 
AudiokineticToolsModule 类的实现 Unreal Editor内各Wwise相关功能的实现,例如插件路径校验,Ak动画通知相关,重定向器相关,PIE相关等。
 
AudiokineticTools.Build.cs 通过UBT实现工具相关代码生成。
 
至此大体的 Wwise Unreal Engine 集成代码分析完毕。
 
posted on 2017-02-08 14:23 zhangdoa 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/zhangdoa/p/6378007.html

2017-02-16 20:27:01 IrismoonWang 阅读数 4318
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

用VS2015调试一个unreal engine项目,总是出现msvsmon.exe意外终止,但是我明明是本地调试器,不知道是不是unreal engine本身里面有什么需要远程调试的。

既然远程调试器有问题,google一下,找到两种解决办法:1、删掉程序中所有的断点;2、卸载电脑的VPN程序,我的里面有Astrill,卸载后重启解决,或者按照网站给出的更改hosts文件。详情见:http://stackoverflow.com/questions/26229288/msvsmon-exe-crashed-when-debugging

2016-11-15 09:25:05 pizi0475 阅读数 1064
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

http://blog.csdn.net/shangguanwaner/article/details/42002711

UE4中提供了很多预定义的调试绘制函数,在做调试的时候还是比较方便的。可以在场景里绘制点、线、圆、球、箭头、椎体、胶囊、甚至样条线、字符串、网格等等,基本上该有的都有了。比较赞的是,你能控制线条的厚度,调试的时候就比较直观了。

要使用这些函数,只需要包含DrawDebugHelpers.h 头文件即可。下面介绍几个主要的绘制函数:

1.绘制点

[cpp] view plain copy
  1. ENGINE_API void DrawDebugPoint(const UWorld* InWorld, FVector const& Position, float Size, FColor const& PointColor, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  

可选参数里面,我们可以控制点的尺寸、颜色、持续时间等。bPersistentLines表示,当前绘制的整个对象,是不是持久对象,设为true,它会一直显示当前World,直到你调用下面这个方法,释放它:
[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. void FlushPersistentDebugLines(const UWorld* InWorld);  
其他的绘制函数,此参数意义都是一样的。

2.绘制线

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ENGINE_API void DrawDebugLine(const UWorld* InWorld, FVector const& LineStart, FVector const& LineEnd, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0, float Thickness = 0.f);  

注意Thickness这个参数,它控制线条的厚度。

3.绘制箭头

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ENGINE_API void DrawDebugDirectionalArrow(const UWorld* InWorld, FVector const& LineStart, FVector const& LineEnd, float ArrowSize, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
这个函数绘制一个有向箭头,和绘制线差不多,ArrowSize是箭头的尺寸。

4.绘制Box

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ENGINE_API void DrawDebugBox(const UWorld* InWorld, FVector const& Center, FVector const& Extent, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  2. /** Draw a debug box with rotation */  
  3. ENGINE_API void DrawDebugBox(const UWorld* InWorld, FVector const& Center, FVector const& Box, const FQuat & Rotation, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  

第一个根据Box的尺寸绘制,第二个额外的可以按照一定的旋转绘制。

5.绘制球体

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ENGINE_API void DrawDebugSphere(const UWorld* InWorld, FVector const& Center, float Radius, int32 Segments, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
Segments控制球体的分段,越大越精细。

6.其他

还有很多不太常用的,可以绘制2D圆、圆柱、椎体、平截头体、胶囊等。这里只列出来,具体见DrawDebugHelpers.h
[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ENGINE_API void DrawDebugCoordinateSystem(const UWorld* InWorld, FVector const& AxisLoc, FRotator const& AxisRot, float Scale, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  2. /** Draw Debug Circle */  
  3. ENGINE_API void DrawDebugCircle(const UWorld* InWorld, const FMatrix& TransformMatrix, float Radius, int32 Segments, const FColor& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  4. /** Draw Debug 2D donut */  
  5. ENGINE_API void DrawDebug2DDonut(const UWorld* InWorld, const FMatrix& TransformMatrix, float InnerRadius, float OuterRadius, int32 Segments, const FColor& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  6. /** Draw a debug sphere */  
  7. ENGINE_API void DrawDebugSphere(const UWorld* InWorld, FVector const& Center, float Radius, int32 Segments, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  8. /** Draw a debug cylinder */  
  9. ENGINE_API void DrawDebugCylinder(const UWorld* InWorld, FVector const& Start, FVector const& End, float Radius, int32 Segments, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  10. ENGINE_API void DrawDebugCone(const UWorld* InWorld, FVector const& Origin, FVector const& Direction, float Length, float AngleWidth, float AngleHeight, int32 NumSides, FColor const& Color, bool bPersistentLines=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  11. /** Used by gameplay when defining a cone by a vertical and horizontal dot products. */  
  12. ENGINE_API void DrawDebugAltCone(const UWorld* InWorld, FVector const& Origin, FRotator const& Rotation, float Length, float AngleWidth, float AngleHeight, FColor const& DrawColor, bool bPersistentLines=falsefloat LifeTime=-1.f, uint8 DepthPriority=0);  
  13. ENGINE_API void DrawDebugString(const UWorld* InWorld, FVector const& TextLocation, const FString& Text, class AActor* TestBaseActor = NULL, FColor const& TextColor = FColor::White, float Duration = -1.000000);  
  14. ENGINE_API void DrawDebugFrustum(const UWorld* InWorld, const FMatrix& FrustumToWorld, FColor const& Color, bool bPersistentLines = falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  15. /** Draw a capsule using the LineBatcher */  
  16. ENGINE_API void DrawDebugCapsule(const UWorld* InWorld, FVector const& Center, float HalfHeight, float Radius, const FQuat & Rotation, FColor const& Color, bool bPersistentLines=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  17. /** Draw a debug camera shape.  FOV is full angle in degrees. */  
  18. ENGINE_API void DrawDebugCamera(const UWorld* InWorld, FVector const& Location, FRotator const& Rotation, float FOVDeg, float Scale=1.f, FColor const& Color=FColor::White, bool bPersistentLines=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  19. ENGINE_API void FlushDebugStrings(const UWorld* InWorld);  
  20.   
  21. ENGINE_API void DrawDebugSolidBox(const UWorld* InWorld, FVector const& Center, FVector const& Box, FColor const& Color, bool bPersistent=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  22. ENGINE_API void DrawDebugSolidBox(const UWorld* InWorld, FVector const& Center, FVector const& Extent, FQuat const& Rotation, FColor const& Color, bool bPersistent=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  23. ENGINE_API void DrawDebugMesh(const UWorld* InWorld, TArray<FVector> const& Verts, TArray<int32> const& Indices, FColor const& Color, bool bPersistent=falsefloat LifeTime=-1.f, uint8 DepthPriority = 0);  
  24. ENGINE_API void DrawDebugSolidPlane(const UWorld* InWorld, FPlane const& P, FVector const& Loc, float Size, FColor const& Color, bool bPersistent=falsefloat LifeTime=-1, uint8 DepthPriority = 0);  
  25.   
  26. /* Draws a 2D Histogram of size 'DrawSize' based FDebugFloatHistory struct, using DrawTransform for the position in the world. */  
  27. ENGINE_API void DrawDebugFloatHistory(UWorld const & WorldRef, FDebugFloatHistory const & FloatHistory, FTransform const & DrawTransform, FVector2D const & DrawSize, FColor const & DrawColor, bool const & bPersistent = falsefloat const & LifeTime = -1.f, uint8 const & DepthPriority = 0);  
  28.   
  29. /* Draws a 2D Histogram of size 'DrawSize' based FDebugFloatHistory struct, using DrawLocation for the location in the world, rotation will face camera of first player. */  
  30. ENGINE_API void DrawDebugFloatHistory(UWorld const & WorldRef, FDebugFloatHistory const & FloatHistory, FVector const & DrawLocation, FVector2D const & DrawSize, FColor const & DrawColor, bool const & bPersistent = falsefloat const & LifeTime = -1.f, uint8 const & DepthPriority = 0);  


2015-11-23 19:01:05 wag2765 阅读数 293
  • 从这里开始虚幻4-Editor介绍 v4.18

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

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

 

用编译版本的UE4来构建并运行项目,只需要重新生成下VS工程文件即可:

右击*.uproject文件,选择:Switch Unreal Engine version,然后选择UE4的编译版本:


 

切换版本以后,再右击*.uproject并选择:Generate Visual Studio project files,最后启动VS,就能看到完整的引擎代码并进入调试。

 

 

下面是论坛上介绍的一种老旧方法,相对麻烦点

原文地址:https://answers.unrealengine.com/questions/16760/how-to-compile-the-shooter-game-sample-manually.html

 

Here is how to get the Shooter project to run in your own compiled version of the engine:

  1. Right Click on the .uproject file and select, "Generate Visual Studio Files."

  2. Open the Visual Studio Solution

  3. Make sure your project is set to build for, "Development Editor" in the Solution Configurations drop-down.

  4. Select the project container (Not the Solution Container) in the Solution Explorer, right click on it and select, "Properties."

  5. Under Configuration Properties select, "NMake."

  6. Find and replace everywhere that the project is looking for the Launcher installed version of the engine and replace those path with the correct paths to your source built version of UE4.

  7. Clean the Solution.

  8. Build the Solution.

The project should now open without errors in your source built version of the Editor.

UE4 的 C++ 开发体验

阅读数 1821

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