Комментарии 16
перешло из «неподдерживаемой» в бету, что то новое
тем не менее. Имею ввиду вот что: github.com/EpicGames/UnrealEngine/commit/2774cafe67323eaf1e57a426b72abedac52db4e6. Упоминание о бете все еще осталось.
Жаль что ссылка на приватный репник :)
К нему доступ можно получить, если иметь эпиковский аккаунт и привязать его к гитхабу. По ссылке такой дифф (коммит от 7 декабря 2018):
Дифф
Engine/Plugins/Runtime/GameplayAbilities/GameplayAbilities.uplugin
@@ -3,7 +3,7 @@
"Version" : 1,
"VersionName" : "0.1",
"FriendlyName" : "Gameplay Abilities",
- "Description" : "[UNSUPPORTED] Adds GameplayEffect and GameplayAbility classes to handle complicated gameplay interactions.",
+ "Description" : "Adds GameplayEffect and GameplayAbility classes to handle complicated gameplay interactions.",
"Category" : "Gameplay",
"CreatedBy" : "Epic Games, Inc.",
"CreatedByURL" : "http://epicgames.com",
Ждемс продолжения, интересная система =)
Спасибо за статью!
А почему вы создаёте AttributeSet именно таким образом?
У AbilitySystemComponent есть методы для создания нужного сета (или его можно создать через DefaultStartingData в параметрах компонента, заодно проинициализровав), а такой способ связывает ASC и сет не самым очевидным образом, как по мне
А почему вы создаёте AttributeSet именно таким образом?
У AbilitySystemComponent есть методы для создания нужного сета (или его можно создать через DefaultStartingData в параметрах компонента, заодно проинициализровав), а такой способ связывает ASC и сет не самым очевидным образом, как по мне
Соглашусь по поводу того, что способ связывания не очевидный, однако любой объект (наследник UAttributeSet) аутером которого является овнер ASC попадет в атрибуты в любом случае.
В данном примере не требовалась специфичная инициализация, поэтому вызов UAbilitySystemComponent::InitStats(TSubclassOf Attributes, const UDataTable* DataTable) я пропустил
Код из AbilitySystemComponent_Abilities.cpp
void UAbilitySystemComponent::InitializeComponent()
{
Super::InitializeComponent();
// Look for DSO AttributeSets (note we are currently requiring all attribute sets to be subobjects of the same owner. This doesn't *have* to be the case forever.
AActor *Owner = GetOwner();
InitAbilityActorInfo(Owner, Owner); // Default init to our outer owner
TArray<UObject*> ChildObjects;
GetObjectsWithOuter(Owner, ChildObjects, false, RF_NoFlags, EInternalObjectFlags::PendingKill);
for (UObject* Obj : ChildObjects)
{
UAttributeSet* Set = Cast<UAttributeSet>(Obj);
if (Set)
{
SpawnedAttributes.AddUnique(Set);
bIsNetDirty = true;
}
}
}
В данном примере не требовалась специфичная инициализация, поэтому вызов UAbilitySystemComponent::InitStats(TSubclassOf Attributes, const UDataTable* DataTable) я пропустил
Прошу прощения, но очень хочу высказать критику к стилю изложения. Начало статьи — отвратительное (точнее, отсутствует введение), за первые четыре абзаца (то есть не открывая полную версию) совершенно невозможно понять о чём идёт речь. Что такое Gameplay Ability System и что она делает? Зачем мне об этом читать? Для кого вообще эта статья? Будет ли мне это интересно, если я работаю много лет с Unity, а с Unreal знаком поверхностно? Очень хотелось бы видеть ответы в самом начале статьи, тем более, что ответ на них можно уместить в пару предложений.
Описание плюсов и минусов до описания назначения вообще выглядит как издевательство. В целом, статья интересная и полезная, но подобных на Хабре много и хотелось бы иметь общее представление о статье до прочтения, чтобы понять нужно ли это и когда читать.
Описание плюсов и минусов до описания назначения вообще выглядит как издевательство. В целом, статья интересная и полезная, но подобных на Хабре много и хотелось бы иметь общее представление о статье до прочтения, чтобы понять нужно ли это и когда читать.
спасибо, учту на будущее
Если бы речь шла об абстрактной статье в вакуме — я бы с вами согласился.
Но GAS весьма специфичная штука и если вы про неё не слышали никогда — эта статья просто не для вас.
Но GAS весьма специфичная штука и если вы про неё не слышали никогда — эта статья просто не для вас.
Но GAS весьма специфичная штука и если вы про неё не слышали никогда — эта статья просто не для вас.В большинстве случаев, это не так. Во всяком случае, статьи с описанием инструментов для Unity о которых я никогда не слышал — чаще оказываются полезными, они либо пригождаются сразу, либо через некоторое время. И первых четырёх абзацев статьи совершенно недостаточно для понимания пригодится ли мне когда либо GAS, что это такое и для чего он применяется.
Может использоваться гейм-дизайнерами без участия программиста
Ну да, ну да. А блюпринты у нас художники рисуют?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Gameplay Ability System: как мы используем плагин для разработки Survival RPG