UPROPERTY

4 статей на этой странице

UPROPERTY · 15.06.2026 · 1 мин

BlueprintReadOnly — спецификатор UPROPERTY, который открывает свойство только для чтения в Blueprints. Значение можно получить через Get-ноду, но нельзя изменить через Set.

Этот спецификатор используется, когда значение должно быть видно в Blueprint, но изменять его должен только C++ код.

  • значение должно быть видно в Blueprint, но изменять его должен только C++ код
  • состояние объекта, которое можно читать, но нельзя перезаписывать из Blueprint
  • внутренние расчётные данные, которые нужно показывать для отладки
UCLASS()
class MYGAME_API AMyActor : public AActor
{
    GENERATED_BODY()

public:

    UPROPERTY(BlueprintReadOnly)
    float CurrentSpeed = 0.0f;

    UPROPERTY(BlueprintReadOnly)
    bool bIsAlive = true;

    virtual void Tick(float DeltaTime) override;
};
СпецификаторGet (чтение)Set (запись)Когда использовать
BlueprintReadWriteДаДаКогда нужен полный доступ из Blueprint
BlueprintReadOnlyДаНетКогда менять значение должен только C++

Официальный список спецификаторов UPROPERTY, включая BlueprintReadOnly, можно посмотреть в документации Epic Games.

Открыть как отдельную страницу →
UPROPERTY · 15.06.2026 · 1 мин

BlueprintReadWrite — спецификатор UPROPERTY, который открывает свойство для чтения и записи в Blueprints (Event Graph, Construction Script, Function Calls).

Без этого спецификатора свойство недоступно из Blueprint-нод вообще.

С BlueprintReadWrite ты можешь:

  • читать значение переменной из любой Blueprint-ноды (Get)
  • записывать новое значение (Set)
  • использовать свойство в Break / Make нодах для структур
  • свойство должно быть доступно в Blueprint как для чтения, так и для изменения
  • ты хочешь дать разработчику возможность настраивать логику в Event Graph
  • параметр или конфигурация, которую нужно менять во время игры из Blueprint
UCLASS()
class MYGAME_API AMyActor : public AActor
{
    GENERATED_BODY()

public:

    UPROPERTY(BlueprintReadWrite)
    float Health = 100.0f;

    UPROPERTY(BlueprintReadWrite)
    FString CharacterName = TEXT("Hero");
};

В Blueprint Editor для BlueprintReadWrite автоматически создаются ноды Get и Set:

Get — читает текущее значение. Set — записывает новое значение. Работает с любым типом переменной.

СпецификаторGet (чтение)Set (запись)Сценарий
BlueprintReadWriteДаДаСвойство доступно для чтения и изменения
BlueprintReadOnlyДаНетТолько чтение — значение нельзя изменить

Официальный список спецификаторов UPROPERTY, включая BlueprintReadWrite, можно посмотреть в документации Epic Games.

Открыть как отдельную страницу →
UPROPERTY · 22.03.2026 · 1 мин

Что такое EditAnywhere

EditAnywhere - самый универсальный спецификатор UPROPERTY.
Он позволяет редактировать переменную везде, где появляется панель Details:

  • в Class Defaults (настройки класса по умолчанию)
  • в каждом отдельном экземпляре актора на уровне
  • в компонентах, структурах, вложенных объектах

Это означает, что одно и то же свойство можно настраивать как глобально (для всех объектов), так и индивидуально (для каждого объекта в сцене)..

Когда использовать EditAnywhere

  • когда хочешь настраивать значения для каждого объекта на сцене
  • нужна гибкость и на уровне класса, и на уровне экземпляра

Пример кода

UCLASS()
class MYGAME_API AMyClass : public AActor
{
    GENERATED_BODY()

public:

    UPROPERTY(EditAnywhere)
    FString Property = "";

    UPROPERTY(EditDefaultsOnly)
    FString DefaultOnlyProperty = "";

};
Обложка статьи про спецификатор EditAnywhere в Unreal Engine

Как это выглядит в редакторе

В Class Defaults меняешь → влияет на все новые экземпляры.
В размещённом акторе меняешь → переопределяется только этот экземпляр.

Панель Details в редакторе Unreal Engine со свойством EditAnywhere

Сравнение с EditDefaultsOnly и EditInstanceOnly

СпецификаторClass DefaultsЭкземпляр на уровнесценарий
EditAnywhereДаДаУниверсальный
(самый популярный)
EditDefaultsOnlyДаНетГлобальные настройки класса
EditInstanceOnlyНетДаТолько индивидуальные корректировки
Открыть как отдельную страницу →
UPROPERTY · 22.03.2026 · 1 мин

EditAnywhere - самый универсальный спецификатор UPROPERTY.
Он позволяет редактировать переменную везде, где появляется панель Details:

  • в Class Defaults (настройки класса по умолчанию)
  • в каждом отдельном экземпляре актора на уровне
  • в компонентах, структурах, вложенных объектах

Это означает, что одно и то же свойство можно настраивать как глобально (для всех объектов), так и индивидуально (для каждого объекта в сцене)..

  • когда хочешь настраивать значения для каждого объекта на сцене
  • нужна гибкость и на уровне класса, и на уровне экземпляра
UCLASS()
class MYGAME_API AMyClass : public AActor
{
    GENERATED_BODY()

public:

    UPROPERTY(EditAnywhere)
    FString Property = "";

    UPROPERTY(EditDefaultsOnly)
    FString DefaultOnlyProperty = "";

};

В Class Defaults меняешь → влияет на все новые экземпляры.
В размещённом акторе меняешь → переопределяется только этот экземпляр.

СпецификаторClass DefaultsЭкземпляр на уровнесценарий
EditAnywhereДаДаУниверсальный
(самый популярный)
EditDefaultsOnlyДаНетГлобальные настройки класса
EditInstanceOnlyНетДаТолько индивидуальные корректировки

Официальный список спецификаторов UPROPERTY, включая EditDefaultsOnly, можно посмотреть в документации Epic Games.

Открыть как отдельную страницу →