C++ 如何在ure4.7中为StaticMeshComponent添加OnClicked事件?

C++ 如何在ure4.7中为StaticMeshComponent添加OnClicked事件?,c++,unreal-engine4,C++,Unreal Engine4,嘿,我一直试图在运行时单击StaticMeshComponent,但无法单击特定的StaticMeshComponent。我尝试了下面的逻辑来单击并设置OnClick()函数中的材质,但没有成功。AddDynamic方法正确吗?? In.cpp 你们能帮我解决这个问题吗,或者给我一个有效的逻辑来解决我的问题 注:游戏模式:鼠标点击模式我刚刚做了一个快速测试,一切正常。也许我使用的步骤可以帮助您: 1、推出UE4.18;创建一个新的C++项目,包括基本代码、桌面/控制台、最大质量,并且没有启动内容

嘿,我一直试图在运行时单击StaticMeshComponent,但无法单击特定的StaticMeshComponent。我尝试了下面的逻辑来单击并设置OnClick()函数中的材质,但没有成功。AddDynamic方法正确吗??
In.cpp

你们能帮我解决这个问题吗,或者给我一个有效的逻辑来解决我的问题


注:游戏模式:鼠标点击模式

我刚刚做了一个快速测试,一切正常。也许我使用的步骤可以帮助您:

1、推出UE4.18;创建一个新的C++项目,包括基本代码、桌面/控制台、最大质量,并且没有启动内容

2,添加一个播放器控制器C++类,使用默认构造函数显示鼠标光标,并启用点击和鼠标过事件< /P> < p > 3,打开项目生成的C++游戏模式类,并使用默认构造函数将默认播放器控制器类设置为新类

4,编辑项目设置使用C++游戏模式类(映射和模式->默认模式->默认GAMMODED)

< P> 5,添加一个新的带有一个单击函数的典当C++类,它只需将消息记录到输出日志中,并将该函数注册到默认构造函数

OnClicked.AddUniqueDynamic(this, &AMyCharacter::OnSelected);
< P> 6,添加从我的C++典当类派生的蓝图类,并将其<>强>立方体(静态网格组件)< /强>添加到其组件中,然后<强>在其详细面板中检查“隐藏在游戏中< <强> >。 或
如果要使用角色的默认碰撞配置文件
Pawn
接收
单击的事件
可见性
必须设置为
(项目设置->引擎->碰撞->预设->典当->跟踪类型->可见性)

严格的方法是添加新的
跟踪通道
,用于点击测试,请参阅此视频的更多详细信息:

7,将我的一个蓝图兵放在玩家面前的场景中

8、玩关卡,点击我的blueprint Pawn类的立方体,查看输出日志,看到消息出现

主要代码:

字符内构造函数

OnClicked.AddUniqueDynamic(this, &AMyCharacter::OnSelected);
在头字符中

UFUNCTION()
        void OnSelected(AActor* Target, FKey ButtonPressed);
在AMyCharacter.cpp中

void AMyCharacter ::OnSelected(AActor* Target, FKey ButtonPressed)
{
    GEngine->AddOnScreenDebugMessage(-1, 2.f, FColor::Cyan, FString("EEEEEEEEEEEEEEEEE"));
}
void AMyCharacter ::OnSelected(AActor* Target, FKey ButtonPressed)
{
    GEngine->AddOnScreenDebugMessage(-1, 2.f, FColor::Cyan, FString("EEEEEEEEEEEEEEEEE"));
}