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 вместо bool. Почему они это делают?
Автономный bool
длиной не менее одного байта. Процессор не может обрабатывать меньшие единицы. Однако мы все знаем, что байт может содержать 8 бит / бул, поэтому если у вас есть структура данных, содержащая несколько булев, вам не нужен байт для каждого. Они могут поделиться байтом. Если у вас много таких структур, это может сэкономить память.