Я создал объект 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
}
2 ответа
Чтобы связать SkeltaMesh с вашим скриптом, нет способа сделать это как единое целое, когда вы прикрепляете скрипт, однако есть способ.
- Выберите свою SkeltaMesh на сцене
- Перейдите на панель подробностей и добавьте свой компонент C ++.
- Проверьте свою панель деталей, чтобы узнать, где находится ваш скрипт в дереве и кто является его родителем, если sketalmesh напрямую является его родителем, это будет слишком просто, все, что вам нужно, чтобы получить родительский компонент или актера и применить к нему, а затем вернуть значение - это то, что вы ищете, если приведение успешно
- в этом примере я сделал для статической сетки.
Но вы должны сделать свою переменную в Script общедоступной и редактируемой внутри blueprint, чтобы иметь возможность устанавливать их во время выполнения.
У меня была такая же проблема, но только с чертежом.
Чтобы получить доступ к вашей переменной из c ++ внутри blueprint, у вас есть два способа
< Код > UFUNCTION ( BlueprintCallable ) void SetStaticMesh (тип входной переменной); Затем вы вызываете эту функцию в своем основном проекте, чтобы назначить статическую сетку или skeltaMesh, или любой другой тип, который вы хотите.
В противном случае вы можете поставить UPROPERTY (BlueprintReadWrite) перед объявлением вашей переменной, и тогда вы сможете установить ее непосредственно в blueprint.
Это должно быть в другой теме, но пока я оставлю ответ здесь.
Создание переменных в C ++ для использования в BP
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.