Я создал объект SkeletalMesh в сцене, а в редакторе добавил компонент C ++, но как только я прикрепил его к SkeletalMesh, я не могу узнать, где он находится на панели Unreal. Я знаю, что это работает, потому что после того, как я прикрепил скрипт к объекту, он печатает простой вывод отладки.

Основная причина, по которой я хочу знать, где найти свой компонент скрипта, заключается в том, что я хочу иметь возможность ссылаться на SkeletalMesh, скрипт прикреплен через C ++ так же, как вы можете в Unity с C #.

Есть ли способ ссылаться на объект, к которому прикреплен мой сценарий C ++, и получать доступ к значениям SkeletalMesh через C ++?

Мой код сейчас представляет собой просто оболочку, но здесь я прокомментировал места, где я хочу создать ссылку на скелетную сетку, и где я хочу ее анимировать:

#include "Glove.h"


// Sets default values for this component's properties
UGlove::UGlove()
{
    PrimaryComponentTick.bCanEverTick = true;
}


// Called when the game starts
void UGlove::BeginPlay()
{
    Super::BeginPlay();
    // GET SKELETALMESH VALUE HERE SOMEHOW
}


// Called every frame
void UGlove::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
    Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

    // ANIMATE SKELETALMESH HERE SOMEHOW
}
-1
karamazovbros 24 Окт 2018 в 04:00

2 ответа

Лучший ответ

Чтобы связать SkeltaMesh с вашим скриптом, нет способа сделать это как единое целое, когда вы прикрепляете скрипт, однако есть способ.

  1. Выберите свою SkeltaMesh на сцене
  2. Перейдите на панель подробностей и добавьте свой компонент C ++.
  3. Проверьте свою панель деталей, чтобы узнать, где находится ваш скрипт в дереве и кто является его родителем, если sketalmesh напрямую является его родителем, это будет слишком просто, все, что вам нужно, чтобы получить родительский компонент или актера и применить к нему, а затем вернуть значение - это то, что вы ищете, если приведение успешно
  4. в этом примере я сделал для статической сетки. Начало воспроизведения события с назначением skeltamesh

Но вы должны сделать свою переменную в Script общедоступной и редактируемой внутри blueprint, чтобы иметь возможность устанавливать их во время выполнения.

У меня была такая же проблема, но только с чертежом.

1
VectorX 24 Окт 2018 в 13:27

Чтобы получить доступ к вашей переменной из c ++ внутри blueprint, у вас есть два способа

< Код > UFUNCTION ( BlueprintCallable ) void SetStaticMesh (тип входной переменной); Затем вы вызываете эту функцию в своем основном проекте, чтобы назначить статическую сетку или skeltaMesh, или любой другой тип, который вы хотите.

В противном случае вы можете поставить UPROPERTY (BlueprintReadWrite) перед объявлением вашей переменной, и тогда вы сможете установить ее непосредственно в blueprint.

Это должно быть в другой теме, но пока я оставлю ответ здесь.

Создание переменных в C ++ для использования в BP

1
VectorX 24 Окт 2018 в 18:09
52959722