
不知为何,UE API现在已经不随引擎发布chm的离线文档了,官方发布的最新版本还是2014年的,UE发展到现在有了很多变化,显然四年前的API文档已经丧失部分参考价值了。但是UE文档站自身的搜索功能就我的体验而言,十分的烂。
所以折腾了一下把UE API的所有页面爬了下来,并且生成了Dash支持的文档,检索起来十分酸爽。(文后附下载链接)
2022.06.07更新:把API文档更新至UE 5.0.2,可在文末下载。。
因为UnrealEngine在切换关卡(OpenLevel
)时会把当前关卡的所有对象全部销毁,但是常常我们需要保存某些对象到下一关卡中,今天读了一下相关的代码,本篇文章讲一下如何来实现。
其实Unreal的文档是有说明的(Travelling in Multiplayer),实现起来也并不麻烦,但是UE文档的一贯风格是资料是不详细的,中文资料更是十分匮乏(多是机翻,而且版本很老),在搜索中也没有查到相关的靠谱的东西,我自己在读代码实现的过程中就随手记了一下,就当做笔记了。
最近有在VS中用到Protobuf,简单记录一下使用MSVC构建Protobuf的流程。
由于Github Pages不支持custom domain
的HTTPS,今天折腾了一下搞定了在VPS上用Nginx到Github Pages的反向代理,使用的是Let’s Encrypt签发的证书,实现了全站HTTPS(资源外链也都换成了HTTPS),简单记录一下。
C++的基础语法里提供了||
与&&
两个逻辑操作符还有,
(comma)运算符。在类中我们也可以重载这些操作符,但是不要这样做,我会在这篇文章中写出标准描述以及不能重载的原因。
概括来说,因为内置的||和&&具有短路求值语义,如果你自己重载了他们就变成了普通的函数调用,会具有与built-in ||
与&&
完全不同的语义。
而,操作符具有从左到右求值的语义,所以如果自己重载,会变成函数调用,也会具有不同于built-in的语义。
本文主要是我学习模板元编程过程中的一些心得总结,以及我写的一些模板元编程的代码也都会放到这里来。
在C++14标准(C++98/11也一样)中,在Annex C Compatibility里有这么一条:
Change: Converting void* to a pointer-to-object type requires casting
1 | char a[10]; |
ISO C will accept this usage of pointer to void being assigned to a pointer to object type. C ++ will not.
但是为什么operator new()
会返回void*
且不用显式转换为T*
就能赋值给T*
呢?
在C++中lambda-expression
的结果叫做闭包对象(closure object)
。本篇文章并非是介绍C++ lambda的用法的(这一点《TC++PL》、《C++ Primer》中都十分详细,或者看我之前的总结C++11的语法糖#lambda表达式),而是从LLVM-IR来分析在Clang中是如何实现lambda-expression
的。