不知为何,UE API现在已经不随引擎发布 chm 的离线文档了,官方发布的最新版本还是 2014 年的,UE 发展到现在有了很多变化,显然四年前的 API 文档已经丧失部分参考价值了。但是 UE 文档站自身的搜索功能就我的体验而言,十分的烂。
所以折腾了一下把 UE API 的所有页面爬了下来,并且生成了 Dash 支持的文档,检索起来十分酸爽。(文后附下载链接)
2020.08.27 更新:把 API 文档更新至 UE4.25。
先来看一下成果图(我在 Windows 下使用的是Zeal,它使用的是 Dash 的文档源):
最开始的打算是把 UE API 的文档爬下来之后生成 chm,但是在我爬下来之后发现太大了,现在 (2018.07.05),UE 的 API 文档 html 页面总大小为 2.89G,做成一个 chm 不太现实,所以就想到了其他办法——做成 Dash 支持的文档。
本着不重复造轮子的精神我查了一下有没有相关的实现,查到了一位仁兄几年前做的一个东西:Unreal Engine API documentation in Dash.
该项目地址为:DrummerB/UnrealEngineDocset(作者已经四年没有更新了 )
他实现的是把官方提供的 chm 解包出来,然后通过 bs4 爬虫框架来生成 Dash 的文档、并建立索引。我已经直接抓取了所有的 Html 文件,所以略过这一步。
可以使用
wget
来下载站点,吐个槽:windows 下的 WebZIP 并不好用。
具体的用法可以从我之前的记录 (imzlp.com/notes) 里查看。
但是经过生成后发现,当时作者解析的方法和现在 UE 的 API 页面已经不一样了,所以我在它的基础上改进了一下,增加了以下几个支持:
- 对所有成员的索引增加 namespace(我手动关闭了 Class/Struct/union 的,因为增加了 namespace 后会对索引排序不友好,可以手动开启)
- 对没有独立页面的变量 / 函数 / 枚举等建立类页面的索引(之前作者的是不对没有独立页面的建立索引,会导致有些成员检索不到,我觉得不太好)
- 增加对 Overridden 的函数索引支持
- 增加 Constructor/Operator/Emum/Typedef 的索引支持
- 对具有 Inheritance Hierarchy 的结构,从 Inheritance Hierarchy 的 tag 中获取 Name,从而避免具有很多同名索引的情况
- 尽可能多地对不同类的相同名字的成员增加 Namespace 的标识
- 一些 bug 修复和优化
生成大约需要十分钟左右(视机器性能而定,当然 Py 的效率也是很一般的),用法(要求 python2 和 bs4):
首先要安装 bs4:
1 | $ pip install bs4 |
然后执行脚本生成:
1 | $ python ue4docset.py -n "UE4" ~/Desktop/API ~/Desktop/UE4.docset |
代码在这里(ue4docset.py):
另外,除了代码之外还需要对 UE API 的页面的 css 文件做一些处理,把下面红框里的部分隐藏掉(实在太影响观感):
需要做的是修改 udn_public.css
和navBar.css
:
1 | # udn_public.css |
1 | # navBar.css |
其实我对 Py 和 CSS 以及 bs4 爬虫框架都不熟,没有专门学习过,只是这两天用到了就现查现学现用,这样能够解决问题也挺好。
资源下载 (Windows 下推荐Zeal 来使用 Dash 文档):
- api.unrealengine.com.tar.gz
- UE4.docset.7z(Dash 文档 / 索引)
将 UE4.docset.7z
与api.unrealengine.com.tar.gz
均解压,并将 api.unrealengine.com/
下的 images
/Include
/INT
三个目录放入 UE4.docset/Contents/Resources/Documents
下即可。
如果使用的是 Zeal,则将UE4.docset
放入 Zeal 安装目录下的 docsets
下即可。
Update
我创建了一个 git 仓库,来存放生成的文档版本:UE4_API_FOR_DASH,可以在仓库的 Release 中下载。
20200827 更新
20190628 更新