大家好,以下是一个链接到我目前游戏原型中的游戏内容标记系统。它基于 Unreal 的 GameplayTag 系统,概念上来说是一个可以被添加到任何 GameObject 的 GameplayTag 容器中的标签 asset,也可以从其中去除。通过这种方式,可以方便地在任何实体上维持小状态信息,无论是临时的还是永久的。

比方说,如果你想在你的游戏中实现一个可以拦住玩家移动的敌人的魔法效果,但只能持续几秒。 你可以创建一个名为 Player.State.Immobilized 的 GameplayTag,将此标签添加到玩家的 GameplayTag 容器中,然后在一定时间内去除。当游戏的输入系统或玩家移动系统检查到该标签的存在时就会忽略玩家的移动。这种结构可以将游戏系统分离,这样就不需要直接在游戏中的某个系统中调用另一个系统,而是通过 GameplayTag 来更新玩家的状态,然后其他系统可以根据需要使用该状态。

更多细节可以在 README 或查看本项目的代码文档中找到。包含的示例场景展示了最基本的 GameplayTags 使用方式,并使用了几个 MonoBehaviour 脚本,这些脚本可以根据 GameplayTag 的存在来toggle GameObject 的组件。

我知道这篇文章比我本来想的要长了(对不起),我只是想强调我没有出售或推动任何东西。目前,我正在休息我的个人游戏项目的开发,并且正在努力将游戏系统分离为独立、公开源码的更通用的模块。我的希望是,这些功能对那些在创意作品中或游戏比赛中的人有用;或者其他开发者可以参看并学习其中的设计和实现。

我真心希望能收到你们的反馈或建设性批评。作为作者,对于我能持续为这个项目投资的保证我不太能做的承诺,但如果您有 PR 提交或您可以自由地创建分支克隆和在你的游戏和比赛中使用,我也是很开心的!