UE_Angelscript 认知篇——应用的项目结构参考#

经过一些摸索,总结了一点项目结构的规则。 这是我现在给自己定的,仅供参考。

继承关系----蓝图-->AS-->Cpp#

所有 AS 里继承的类,都来自于 Cpp 的中间层。#

双人成行的游戏代码的 AS 部分是公开的,通过简单地阅读可以发现,它的 Actor 继承都不是直接继承引擎的 AActor,而是单独的 AHazeActor,不过除了继承之外的使用过程中,AActor 还是正常用。

由此,可以想到,继承关系中,用一个中间层隔离引擎和 AS 代码,可以起到如下好处: 当需要增加或修改功能的时候,就往自己中间层里增加修改,而不会望着引擎的那个类,改也不是,不改也不是。另外,绑定和修改等等,也是这种中间层比较自由。

绝大部分蓝图的父类,都来自于 AS。#

蓝图的好处是配置方便,不用写硬路径,所以用了 AS,蓝图在需要的时候,还是配合使用的。个人更喜欢将蓝图当作配置表,AS 代码里也很方便地知道哪个类被什么蓝图继承了,跳转也很方便。 蓝图的父类来自于 AS,方便在于快速迭代,AS 修改保存,立等可取,和在蓝图里写脚本,然后点击保存一样快。

AS 里将蓝图的类当作类成员,和 cpp 差不多,比如声明UUserWidget,可以用TSubclassOf<UUserWidget>

组合关系----都是 Actor + Component#

关键的 Actor 继承链里包含 ModularGamePlayActors#

这个模块在古代山谷或者 Lyra 项目里。 好处是,可以实现 GameFeature 的 AddComponent 自动添加。

定制专用 Actor 作为中间层#

继承 Actor 是很常见的事情,为了不支持继承自 AActor 以及自由,定制一个自己的通用 Actor。如果一个不够,定制多个也不是不可以。

可选地,配置一个开关参数,参考 ModularGamePlayActors, 实现一下 GameFeature 的自动添加特性。

关键的 Component 继承自 ModularGamePlay#

这些 Component 里有大量的胶水函数,使用起来比较方便,需要自己绑定一次,绑定的时候,函数模板需要特定地将返回类型变成对应的基类。

如用 UInterface ,打包进 ActorComponent#

有些模块大量使用了 UInterface,重写是不可能重写的,能简单包装的,自然就包装起来了。

作用体将原本的 Actor 本体,转换为它的 Component 里。比如原本是 Actor 本体实现对话的接口,现在就让 Actor 的 Component 来实现。

Subsystem----继承自AS #

AS 有自己的一套 Subsystem:

GAS ----继承自AS #

GAS 系统(GameplayAbilitySystem) 本来暴露给蓝图的内容就不是很多,所以如果需要自己绑定,很麻烦,幸好官方提供了绑定的插件 AngelscriptGAS,只需要打开即可。

值得注意的是,有些对原生 struct 的绑定不得不进行二次包装(因为这个插件不修改引擎源码)。

另外,即使官方提供了很多绑定,仍然有些欠缺的,需要自己通过Mixin或者手工绑定了。

×

联系

问题反馈

问题与反馈请提交至 GitHub Issues。

合作

合作事宜请发送邮件至 contact@cuviss.com。

×

关于

服务条款

各插件的许可证见社区贡献页。

网站内容可在注明来源后引用。

软件和文档按“现状”提供,不作任何保证。

Unreal Engine 等第三方项目及名称相关商标归各自所有者所有。soloAS 与 Epic Games、Hazelight 均无关联。

致谢和案例展示请求均不具约束力,详见首页说明。

更新于 2026-10-24

隐私政策

本网站不使用分析工具、Cookie 或跟踪,也没有数据表单或第三方脚本。

网站托管于 GitHub Pages。GitHub 可能按其隐私声明处理标准访问日志。

通过邮件发送的内容会提供给我们;通过 GitHub Issues 发送的内容会提供给 GitHub。

更新于 2026-10-24

目录

页面列表

本页目录