UE4
学习虚幻引擎的点点滴滴,记录一些平常遇到的问题。
嘿克不黑
因为热爱,成就梦想。
展开
-
UE4运行时的顶点绘制
1、创建一个空的C++虚幻项目。2、添加一个Blueprint function library 。3、 添加依赖4、在刚刚创建的Blueprint function library头文件添加如下内容。UFUNCTION(BlueprintCallable, Category = VertexPainting) static void PaintSMVertices(UStaticMeshComponent* SMComp);5、在刚刚创建的Blueprint func原创 2021-07-21 13:10:56 · 1449 阅读 · 3 评论 -
UE4 – 以编程方式创建新材质和内部节点
在这篇文章中,我们将学习如何从 C++代码创建新材质、创建节点和创建连接。您可以将此代码添加到自定义插件中,以便在用户单击编辑器按钮时神奇地创建新材质。请记住,此代码旨在在编辑器中执行。您的插件必须是编辑器插件。此代码在运行时无法工作...图解步骤1、新建一个插件2、进入VS编写代码,把文章后面的完整代码放入Test.cpp的PluginButtonClicked函数里面(注意我的插件名字叫Test,你的可能和我不一样)。还有记得添加相关头文件和相应模块,要不然编译失败。.原创 2021-07-15 09:38:06 · 2662 阅读 · 9 评论 -
UE4 – 使用 ParallelFor 提高速度
虚幻引擎开发时,我们有时不得不在主体中制作包含大量内容的复杂 for 循环。通常,它会破坏性能,尤其是当 for 循环的迭代次数增加时。这篇小文章的目的是介绍一个很好的技巧,可以大大提高这些操作的性能:它是ParallelFor。ParallelFor允许我们在一分钟内对任何 for 循环进行多线程处理,从而通过在多个线程之间拆分工作来划分执行时间。让我们看看如何用ParallelFor替换我们的 for 循环。用ParallelFor替换经典的 for 循环。假设我们有一个int32的TAr.原创 2021-07-14 19:52:08 · 2455 阅读 · 4 评论 -
UE4中的FDateTime
//Capture the current time stamp and format it to YYYY-MM-DD HH:MM:SS.mmm.FDateTime CurrentDateAndTime = FDateTime::UtcNow();//Capture the time stamp.FString FormattedTimeStamp = FString::Printf(TEXT("%04i-%02i-%02i %02i:%02i:%02i.%03i"), CurrentDateA.原创 2021-07-13 18:30:03 · 1375 阅读 · 0 评论 -
UE4判断CPU核数
int32 NumberOfCores = FPlatformMisc::NumberOfCores();//物理核数,4核8线程的机器返回的是4原创 2021-07-13 15:22:34 · 591 阅读 · 0 评论 -
UE4中常用功能总结
//把内容浏览器里面的类生成到世界TSubclassOf<AAICoverPointsGenerator> AAICoverPointsGeneratorClass = StaticLoadClass(AAICoverPointsGenerator::StaticClass(), nullptr, *FString(TEXT("/Game/Game/AI/AISegma/Exporter/BP_CoverPointGenerator.BP_CoverPointGenerator_C").原创 2021-07-12 09:38:54 · 842 阅读 · 0 评论 -
UE4自定义Log的Category
虚幻引擎4提供了多种自定义Category的宏。可参考 LogMactos.h文件。这里介绍一种相对简单的自定义宏的方法。DEFINE_LOG_CATEGORY_STATIC(LogMyCategory,Warning,All);原创 2021-07-11 15:11:10 · 848 阅读 · 0 评论 -
GConfi类的使用
在我们平时的开发过程中,会经常有读写配置文件需求,需要虚幻 引擎4提供底层的文件读写功能,而且C++原生也提供操作系统级别的 文件读写。但读文件、写文件及解析内容等操作,还是不够方便。这时 候我们就可以用虚幻引擎4提供的专门读写配置文件的类——GConfi。 GConfi类提供了非常方便的API让我们可以快速读写配置。而且 GConfi是属于Core模块的类,一般也不需要进行添加模块引用。接下来 我们分别看一下具体使用方法。写配置GConfig->SetString(TEXT("MySect原创 2021-07-11 15:07:18 · 2942 阅读 · 0 评论 -
FString toTCHAR*
FString s="a";TCHAR* t=*s;原创 2021-07-09 16:19:25 · 888 阅读 · 1 评论 -
UE4创建渲染代理
首先新建一个新的UE4的C++空项目,然后新建一个继承于UPrimitiveComponent的c++类,我这边命名为TestCustomComponent。然后进入VS进行代码编写。TestCustomComponent.h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Engine.h"原创 2021-07-09 13:03:26 · 959 阅读 · 15 评论 -
UE4中的Object 和 Actor Iterators
如何在虚幻引擎 4 中迭代 Actor 和其他 UObject。注意:您应该小心定期使用它! 您不希望每一帧都迭代游戏中的每个对象! 这对于在加载屏幕等期间查找对象非常有用,当manager/actor第一次产生时,但不适用于您的 Tick 或定时事件。Actor IteratorUnreal 有一个内置的 Actor 迭代器,可以循环遍历给定世界中的所有 Actor。// Iterate over all actors, can also supply a different base原创 2021-07-07 12:43:39 · 1427 阅读 · 0 评论 -
UE4渲染系统概览
转载 2021-07-06 17:35:50 · 331 阅读 · 0 评论 -
如何修改vs2019工具栏UnrealVS命令行长度
首先Tool-->Customize...然后如下图。可以通过拖动上图标记那玩意来改变位置。原创 2021-07-06 17:22:36 · 423 阅读 · 0 评论 -
通过c++和资源路径生成Actor
const FSoftClassPath BlockPath(TEXT("/Game/AI/AISegma/Exporter/BP_CoverPointGenerator.BP_CoverPointGenerator_C")); UClass* BlockClass = BlockPath.TryLoadClass<UClass>(); checkf(BlockClass != nullptr, TEXT("expected non-null class")); FTransform ..原创 2021-07-06 11:29:42 · 340 阅读 · 0 评论 -
UE4.26材质剖析-Palette-Expressions
路径:Source/Runtime/Engine/Classes/Materials可以发现,每一个MaterialExpression都有一个对应的文件相对应,而且统一以MaterialExpression为前缀进行命名。比如Constant3Vector对应MaterialExpressionConstant3Vector。打开MaterialExpressionConstant3Vector.h文件就可以看到显示在Details面板的变量Constant的定义。..原创 2021-07-04 12:06:03 · 433 阅读 · 0 评论 -
UE4 Commandlet
网上关于UE4 Commandlet的介绍实在是不多,唯一能找到的两篇文章,不过有这两篇文章也足够理解Commandlet了。 尝试UE4的Commandlet。 UE4: How To Write a Commandlet。原创 2021-07-02 08:33:31 · 539 阅读 · 0 评论 -
UE4如何判断按键
#include <InputCoreTypes.h> //EKeys的头文件// Called when the game starts or when spawnedvoid ATestOpenLevel::BeginPlay(){ Super::BeginPlay(); PlayerControl = UGameplayStatics::GetPlayerController(GetWorld(), 0);}// Called every framevoi.原创 2021-07-01 10:01:33 · 965 阅读 · 0 评论 -
UE4.26材质剖析-Details-Material
1、Material Domain这玩意定义在MaterialShared.h文件里面,具体定义如下图。/** Defines the domain of a material. */UENUM()enum EMaterialDomain{ /** The material's attributes describe a 3d surface. */ MD_Surface UMETA(DisplayName = "Surface"), /** The material's at..原创 2021-06-30 13:32:02 · 1046 阅读 · 4 评论 -
Flipbook Animation
虚幻材质蓝图效果素材图片是虚幻初学者内容里面的,如下图所示。原创 2021-06-29 20:45:47 · 471 阅读 · 0 评论 -
Distortion Shader
虚幻材质蓝图效果素材图片原创 2021-06-29 19:26:57 · 430 阅读 · 0 评论 -
UE4设置磁盘缓存
虚幻引擎默认把缓存放到了C盘里面,路径如下图:如果想修改到自己创建的项目缓存里面 ,只需要修改BaseEngine.ini文件就可以。将BaseEngine.ini文件通过记事本或者其他的软件打开,通过Ctrl+F快捷键打开搜索窗口,输入%ENGINEVERSIONAGNOSTICUSERDIR%DerivedDataCache进行查找。找到以后把这玩意替换为%GAMEDIR%DerivedDataCache就可以了。这样以后缓存就会生成在项目文件下了。...原创 2021-06-29 16:48:43 · 986 阅读 · 0 评论 -
Unable to clean target while hot-reloading. Close the editor and try again.
删除Saved文件夹然后重新生成。如果出现文件夹正在使用无法删除的情况,可参考这篇文章。原创 2021-06-26 22:18:31 · 333 阅读 · 0 评论 -
如何开启UE4着色器调试,并采用指定图形API进行渲染
1、虚幻默认采用DX11渲染,如何设置通过DX12渲染呢?在UE4快捷方式里面添加 -dx12,如图,这样就可以采用DX12进行渲染了。2、虚幻调试着色器功能默认是关闭的,所以只能看见着色器的汇编代码,如何开启调试功能查看源代码呢?修改Engine\Config\ConsoleVariables.ini 找到 r.Shaders.Optimize=0 和 r.Shaders.KeepDebugInfo=1 把前面的;删掉 取消注释 重新启动引擎就行了。...原创 2021-04-29 11:15:39 · 2560 阅读 · 0 评论 -
史上最全的Unreal Engine 4学习资料整理
官方官方文档中文版http://api.unrealengine.com/CHN/ 英文版https://docs.unrealengine.com/en-us/虚幻学院(英文教程,未来可能有汉化)https://academy.unrealengine.com/官方B站https://space.bilibili.com/138827797/#/C++【侯捷】《C++系统工程师》课程 链接:https://pan.baidu.com/s/1ScdbFxNbW624ou...转载 2020-12-18 19:08:13 · 2154 阅读 · 1 评论