yang131

导航

UE5 打不开

在游戏开发中,出现了UE打不开的情况

初步推测,新增了接口Attacker,

而我们的DefaultPawn可能一下子实现了两个接口造成的

而这两个接口都在一个插件里,一个是c++实现的,一个是蓝图实现的

解决方法:先把我的BP_ThirdPersonCharacter代码回退(先把现有的备份下),即Git revert

然后UE打开之后,可以正常运行,然后再拿修改之后的替换进去

后来发现接口的问题

后续:

如果该Character蓝图类实现两个接口打不开,把他们去掉,只用一个,发现可以打开,以前在蓝图中实现的接口,再打开之后都无效了,他们变成了事件

而之前设置的接口都没有了。还有一个特点,就是在另一个类实现这俩接口都能打开,并且正常,问题只出现在BP_ThirdPersonCharacter

我解决如下,在插件c++层的接口进行修改,可以解决蓝图里无法Cast为该c++接口的问题()

接口的实现改成如下,即加入了Blueprintable

UINTERFACE(MinimalAPI, Blueprintable)
class UDamageable : public UInterface
{
	GENERATED_BODY()
};

 c++层访问蓝图对象所实现的接口的话有这些

	AActor* ownerActor = GetOwner();
	bool IsImplementDamagedable = GetOwner()->GetClass()->ImplementsInterface(UDamageable::StaticClass());
	//TScriptInterface<IDamageable> damageable = Cast<TScriptInterface<IDamageable>>(GetOwner());
	//IDamageable* damageable = ownerDamageable;//Cast<IDamageable>(ownerActor);
	if (IsImplementDamagedable)
	{
		IDamageable::Execute_ApplyDamage(ownerActor, DamageNumber);
		//damageable->ApplyDamage(DamageNumber);
	}

  

 

posted on 2023-10-27 16:53  NoNight  阅读(172)  评论(0编辑  收藏  举报