我有一个PlayerControl.cpp派生自 Pawn 类的类
在那个班级中,我有一个方法可以获取 Map 中的所有 Actors
TSubclassOf<AEnemy> ClassToFind;
TArray<AActor*> FoundEnemies;
UGameplayStatics::GetAllActorsOfClass(GetWorld(), ClassToFind, FoundEnemies);
Run Code Online (Sandbox Code Playgroud)
但是 FoundEnemies 数组总是空的,当我在 BP 中做同样的事情时它可以工作。
有人能告诉我为什么这在 C++ 中不起作用吗?或者如果我做错了,如何做正确的?
在虚幻中,我想要
在Unity3D中,这非常简单。这是一行代码(源代码):
transform.LookAt(target, Vector3.up);
Run Code Online (Sandbox Code Playgroud)
在蓝图中,有一个名为“Find Look at Rotation”的节点。问题是没有向上矢量参数,因此当您接近目标时,可能会出现不需要的滚动旋转。
那么,如何在 Unreal 蓝图中创建相当于 Unity LookAt 的功能呢?
使用蓝图,我可以SpawnActorFromClass使用StaticMeshActor,但是通过内置的 Python 脚本插件使用 Python 脚本,
unreal.EditorLevelLibrary().spawn_actor_from_class(ue.Class(name='StaticMeshActor'), location, rot)
Run Code Online (Sandbox Code Playgroud)
我有:
LogPython: Error: TypeError: EditorLevelLibrary: Failed to convert parameter 'actor_class' when calling function 'EditorLevelLibrary.SpawnActorFromClass' on 'Default__EditorLevelLibrary'
LogPython: Error: TypeError: NativizeProperty: Cannot nativize 'Class' as 'ActorClass' (ClassProperty)
LogPython: Error: TypeError: NativizeClass: Cannot nativize 'Class' as 'Class' (allowed Class type: 'Actor')
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我想BlueprintNativeEvent在 C++ 的派生类中实现标记为 的函数的一部分,而其他人则在派生蓝图类中实现该函数的一部分。
然而,该函数似乎不是一个virtual函数,所以我不知道如何override在 C++ 中使用它(尽管在蓝图中它可以工作)。来自 GameplayAbilitySystem 的示例:
UFUNCTION(BlueprintNativeEvent, Category="Calculation")
float CalculateBaseMagnitude(const FGameplayEffectSpec& Spec) const;
Run Code Online (Sandbox Code Playgroud)
如何在 C++ 的派生类中重写它?
我有“从纹理制作画笔”节点,并且可以从编辑器的下拉列表中选择纹理,但是如果其名称保存在字符串变量中(例如“af”),如何从蓝图中实时设置此纹理字段)。谢谢。
例子:
https://blueprintue.com/blueprint/4indn35l/
建议:
理论上,应该有一个包含所有加载的系统纹理的数组,我可以循环,逐一比较纹理的名称,并将正确的纹理发布到“从纹理创建画笔”的插槽中。
谢谢!
我对虚幻引擎 4 非常陌生,我需要一些帮助,我在互联网上找不到答案,所以我希望这里有人可以提供帮助。
当我打开游戏时进入Package项目(Windows)时,如何使其始终默认全屏?所以当我打开游戏时它将是全屏的。
有我可以用来做到这一点的蓝图吗?如果没有,您必须对其进行编程,您能否告诉我必须放置代码或其他内容的确切位置,因为就像我说的那样。我是个新手,大麦知道这个界面以及如何使用它。(我来自Unity)
假设我想在代码中创建一个用于控制 pawn 的 AI 类,但我希望我的设计师能够使用蓝图来修改行为以进行快速迭代。
假设我在MyProjectBaseAI.h 中有这个:
#pragma once
#include "EngineMinimal.h"
#include "GameFramework/Actor.h"
#include "MyProjectBaseAI.generated.h"
UCLASS()
class MYPROJECT_API AMyProjectBaseAI : AActor
{
GENERATED_BODY()
public:
AMyProjectBaseAI(const FObjectInitializer& ObjectInitializer);
virtual void BeginPlay() override;
virtual void Tick(float DeltaSeconds) override;
void SetGoalPosition(FVector pos);
virtual void DetermineGoalPosition(int32 stateData1, int32 stateData2) = 0;
private:
FVector goalPosition;
};
Run Code Online (Sandbox Code Playgroud)
我想让这个类抽象,并有一个蓝图能够根据他们的 AI 设计实现DetermineGoalPosition(...);调用SetGoalPosition(FVector pos)。
那么,设计人员如何在检查器中设置实现类,以便我的 C++ 代码可以实例化它?假设我正在使用AMyProjectBaseAI ai = World->SpawnActor<AMyProjectBaseAI>(...);
我正在使用蓝图在虚幻引擎 4 中开发 VR 游戏。
我想计算用户需要转动他/她的枪(其方向通过运动控制器的位置确定)以指向目标所需的(偏航)角度。
我认为这可能是这样做的方法:
除了我不太确定如何执行。我一直在试验(如下面的屏幕截图所示),但没有进行正确的操作。有什么想法吗?
谢谢!
vector angle unreal-engine4 virtual-reality unreal-blueprint
在一个关卡中,我正在创造一个演员,该演员旨在在某些时候而不是在其他时候存在。我很好地生成了演员,并计划在我不需要它时销毁它。但我想确保我不会处于这样一种状态:当演员不存在时,我会试图对演员采取行动。
我正在考虑带有 new、delete 和 nullptr 的 c++ 对象指针。我将变量初始化为 nullptr,在使用 new 时分配指针,完成后删除指针,然后将变量重新分配为 nullptr。这样我就可以通过检查指针是否不等于 nullptr 来检查指针是否有效。
什么(如果有的话)相当于 UE4 蓝图中这个看似基本的概念?
我想创建文本“按 {InteractKey} 进行 {Interact}”。
如何在不使用 InputAction 的情况下获取绑定到 Interact 操作绑定 (“F”) 的密钥?我想获得钥匙而不触发事件。
所以最后我的文字会说“按 F 来做这件事”。
我是UE的新手,并做了一些简单的入门教程,因此我并不完全知道可用来帮助我找到所需内容的正确术语。游戏开始,我的鼠标消失,我只能使用我设置的输入;所以我的问题是,即使我不需要鼠标输入即可移动(如使用WASD一样),如何保持鼠标解锁并可以在不锁定相机的情况下移动?
虚幻引擎4提供了三个说明符来控制暴露给Blueprint via的C++类成员的可见性和可编辑性UPROPERTY().
UE4源代码中的文档(另请参阅UE4 wiki,UE4文档)说明了关于可编辑性的以下内容:
VisibleAnywhere,VisibleInstanceOnly,VisibleDefaultsOnly:
...根本无法编辑.
EditAnywhere,EditInstanceOnly,EditDefaultsOnly:
......可以编辑......
用于BlueprintReadOnly:
...可以通过蓝图读取,但不能修改.
并且BlueprintReadWrite:
......可以从蓝图中读取或写入.
问题:
由于说明Visible*符已经将使用限制为仅在蓝图中读取,为什么它与BlueprintReadOnly?一起使用?第二个说明符不是多余的吗?例:
UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly)
UMyActorComponent* MyActorComponent;
Run Code Online (Sandbox Code Playgroud)更令人困惑的是使用说明Edit*符,它允许在Blueprint中进行读写,同时BlueprintReadOnly限制在Blueprint中只读.两个指定者不是互相反对的吗?例:
UPROPERTY(EditAnywhere, BlueprintReadOnly)
UMyActorComponent* MyActorComponent;
Run Code Online (Sandbox Code Playgroud)Visible*/ Edit*说明符是否在与说明符不同的上下文中有效BlueprintRead*?(问题不在于InstanceOnly(实例的属性窗口),DefaultsOnly(原型的属性窗口)和Anywhere(实例和原型))我知道代表相当于调度员。但事件声明的类型有很多种。使用 UFUNCTION 宏事件可以使用 BlueprintNativeEvents 和 BlueprintImplementableEvent 来定义。但还有 DECLARE_EVENT 宏。我喜欢把事情想得太多。有人可以解释调度程序、事件和各种类型事件之间的区别吗?在观察者模式中,调度程序是可观察的,事件是这些可观察的观察者吗?
unreal-blueprint ×13
unreal-engine4 ×13
c++ ×5
vector ×2
angle ×1
fullscreen ×1
null ×1
package ×1
polymorphism ×1
python ×1
reference ×1
rotation ×1
scripting ×1
windows ×1