UE4无尽跑酷游戏制作杂记之一

本文是UE4无尽跑酷游戏制作的杂记,探讨了如何设计游戏中的物品系统,主张将物品的抽象、显示和控制分离。通过UItem和AItemActor类的使用,实现了物品的模型、图标和描述等信息的存储,并在蓝图中进行继承覆盖。同时介绍了TSubclassOf模板类在类型安全方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//杂记之一 设计我们的物品拾取系统
虽然我今天看了看我的笔记有很多的坑没有填(之后我会利用中午来把这个坑填写完,印象笔记的贴图真的好难用)
关于物品系统的设计
今天遇到个问题,我改如何设计游戏中的物品系统,如何来分离物品的显示,生效,销毁等等操作。
以前我很有可能设置许许多多的各种物品的预制物品,为他们写好对应的脚本,在我们的unity引擎中,但是我觉得这个不是一个 好的处理办法,在虚幻中我查阅教程,发现者这么一种思路。
我们应该把我们物体的抽象与显示以及控制分开,我们人物,还有游戏使用的时候我们都只关心物品的显示,物品的显去关心自己显示的到底是个什么物品。
所以这里采用了这样的一种设计,Item类来保存我们的游戏物品的抽象(包括物品的模型,图标,描述,以及),Actor是游戏中的显示,我们未来还可能使用到我们物品栏目中的显示。我们Actor类持有我们当前的类是哪个类。

代码如下,其余的实现我们在蓝图中继承覆盖。
UCLASS ()
class BATTERYCOLLECTOR_API UItem : public UObject
{
  GENERATED_BODY ()
public :
  UPROPERTY (EditAnywhere , BlueprintReadOnly, Category ="Item" )
  FString ItemName ;
  UPROPERTY (EditAnywhere , BlueprintReadOnly , Category = "Item" )
  FString Desription ;
  UPROPERTY (BlueprintReadWrite , Category = "Item" )
  ABatteryCollectorCharacter * Owner ;
  UFUNCTION (BlueprintCallable , BlueprintImplementableEvent ,Category = "Item")
  void TakeEffect ();

};

在我们的ItemActor中我们分别设置我们的UItem指针,让这个显示有指向对应的抽象实体。

class UItem;
UCLASS ()
class BATTERYCOLLECTOR_API AItemActor : public AActor
{
  GENERATED_BODY ()

public :

  // Sets def
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值