Как стать автором
Обновить

Комментарии 16

перешло из «неподдерживаемой» в бету, что то новое
Жаль что ссылка на приватный репник :)
image
К нему доступ можно получить, если иметь эпиковский аккаунт и привязать его к гитхабу. По ссылке такой дифф (коммит от 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 и сет не самым очевидным образом, как по мне
Соглашусь по поводу того, что способ связывания не очевидный, однако любой объект (наследник UAttributeSet) аутером которого является овнер ASC попадет в атрибуты в любом случае.
Код из 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) я пропустил
А почему не через AddSet, например? (Кстати, тут у них документация неправильная чуток, новый сет не создастся, если сет с таким классом уже существует)
Да, когда в ещё одном месте увидел такую инициализацию, пришлось покопаться в исходниках, чтобы понять. почему это вообще работет)
Прошу прощения, но очень хочу высказать критику к стилю изложения. Начало статьи — отвратительное (точнее, отсутствует введение), за первые четыре абзаца (то есть не открывая полную версию) совершенно невозможно понять о чём идёт речь. Что такое Gameplay Ability System и что она делает? Зачем мне об этом читать? Для кого вообще эта статья? Будет ли мне это интересно, если я работаю много лет с Unity, а с Unreal знаком поверхностно? Очень хотелось бы видеть ответы в самом начале статьи, тем более, что ответ на них можно уместить в пару предложений.

Описание плюсов и минусов до описания назначения вообще выглядит как издевательство. В целом, статья интересная и полезная, но подобных на Хабре много и хотелось бы иметь общее представление о статье до прочтения, чтобы понять нужно ли это и когда читать.
спасибо, учту на будущее
О, это ещё и ваша первая публикация=) Успехов вам в будущем!
Если бы речь шла об абстрактной статье в вакуме — я бы с вами согласился.
Но GAS весьма специфичная штука и если вы про неё не слышали никогда — эта статья просто не для вас.
Но GAS весьма специфичная штука и если вы про неё не слышали никогда — эта статья просто не для вас.
В большинстве случаев, это не так. Во всяком случае, статьи с описанием инструментов для Unity о которых я никогда не слышал — чаще оказываются полезными, они либо пригождаются сразу, либо через некоторое время. И первых четырёх абзацев статьи совершенно недостаточно для понимания пригодится ли мне когда либо GAS, что это такое и для чего он применяется.
Может использоваться гейм-дизайнерами без участия программиста

Ну да, ну да. А блюпринты у нас художники рисуют?

Не понимаю скепсиса. Добавление, настройка эффектов, расширение абилок (если речь идёт о блюпринтах) — все эти задачи технического гейм дизайна. Все ГД на проекте работают в анриле, «рисуют» блюпринты, behavior tree и выполняют прочие сопутствующие задачи

Зарегистрируйтесь на Хабре , чтобы оставить комментарий