UCLASS(abstract, config=Game, BlueprintType, hidecategories=("Pawn|Character|InternalEvents"))
class ENGINE_API ACharacter : public APawn
{
GENERATED_UCLASS_BODY()
...
UPROPERTY(Transient)
uint32 bClientWasFalling:1;
/** If server disagrees with root motion track position, client has to resimulate root motion from last AckedMove. */
UPROPERTY(Transient)
uint32 bClientResimulateRootMotion:1;
/** Disable simulated gravity (set when character encroaches geometry on client, to keep him from falling through floors) */
UPROPERTY()
uint32 bSimGravityDisabled:1;
/**
* Jump key Held Time.
* This is the time that the player has held the jump key, in seconds.
*/
UPROPERTY(Transient, BlueprintReadOnly, VisibleInstanceOnly, Category=Character)
float JumpKeyHoldTime;
上面的代码来自UE4。他们似乎使用uint32一位bitfield而不是bools。他们为什么这样做?
答案 0 :(得分:8)
独立bool
至少有一个字节长。处理器无法处理较小的单元。但是,我们都知道一个字节可以容纳8位/ bool,所以如果你有一个包含多个bool的数据结构,你就不需要每个字节都有一个字节。他们可以共享一个字节。如果你有很多这样的结构,它可能会节省一些内存。