Technologieaustausch

79. Abklingzeit und Verbrauch der UE5-RPG-Erstellungsfähigkeiten

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

In diesem Artikel optimieren wir weiterhin die Fertigkeiten, und jetzt können die dem Charakter hinzugefügten aktiven Fertigkeiten mit der Benutzeroberfläche synchronisiert werden. In diesem Artikel werden wir den Verbrauch von Fertigkeiten (Fertigkeiten freigeben, um Mana zu reduzieren) und den Kühlmechanismus verbessern.
Wir können sehen, dass Sie im Standardwert der Fertigkeitsklasse deren Kühlung und verbrauchte GE festlegen können
Fügen Sie hier eine Bildbeschreibung ein
Daher werden wir als nächstes GE verwenden, um die Abkühlung und den Verbrauch von Fähigkeiten festzulegen.

Fertigkeitsverbrauch GE hinzugefügt

Wir erstellen zunächst einen Entwurf und die ausgewählte übergeordnete Klasse ist Gameplay Effect
Fügen Sie hier eine Bildbeschreibung ein
Nennen Sie es GE_Cost_FireBolt, was die Kosten des Feuerballs bedeutet.
Fügen Sie hier eine Bildbeschreibung ein
Um unsere Dauer zu verbrauchen, wählen Sie „Sofort“.
Fügen Sie hier eine Bildbeschreibung ein
Dann fügen wir einen Modifikator hinzu, um die Manamenge des Charakters zu reduzieren, und zwar jedes Mal, wenn eine Fertigkeit verwendet wird, um 20.
Fügen Sie hier eine Bildbeschreibung ein
Es wird ein einfacher Verbrauchs-GE erstellt und wir wenden ihn auf Fertigkeiten an
Fügen Sie hier eine Bildbeschreibung ein
Als nächstes müssen wir den Commit Ability-Knoten in der Fertigkeit aufrufen. Dieser Knoten zieht das für die Fertigkeit erforderliche Mana ab. Wenn es eine Abklingzeit gibt, tritt die Fertigkeit in die Abklingzeit ein.
Fügen Sie hier eine Bildbeschreibung ein
Commit Ability ist ein einheitlicher Knoten zum Abzug von Mana und Kühlung. Natürlich können Sie ihn auch trennen und separate Knoten zum Abzug von Verbrauch und Kühlung haben.
Fügen Sie hier eine Bildbeschreibung ein

Testeffekt ausführen
Fügen Sie hier eine Bildbeschreibung ein

CommitAbility analysieren

Zuerst ermitteln wir, ob die Fertigkeit aktiviert wird, wenn nicht genügend Mana vorhanden ist. Wir drucken vor der Verarbeitung des Verbrauchs eine Daten aus.
Fügen Sie hier eine Bildbeschreibung ein
Wenn die Manamenge ausreicht, kann sie erfolgreich gedruckt werden. Wenn die Manamenge jedoch die Freigabe der Fertigkeit nicht unterstützt, wird sie nicht gedruckt. Dies beweist, dass die Fertigkeit nicht eingegeben wird, wenn nicht genügend Ressourcen vorhanden sind Es wird nicht anhand der Commit-Fähigkeit beurteilt, die nur für den Ressourcenverbrauch verwendet wird.
Fügen Sie hier eine Bildbeschreibung ein
Wir schauen uns den Quellcode an und der Code, den er aufruft, ist K2_CommitAbility
Fügen Sie hier eine Bildbeschreibung ein
CommitAbility wird intern aufgerufen, um die Logik zu implementieren. Anschließend wird überprüft, ob der Verbrauch ausreicht, um die Fähigkeiten bereitzustellen, und die Funktion wird aufgerufen, um die Ressourcen abzuziehen.
Fügen Sie hier eine Bildbeschreibung ein
CommExecute ist eine Ressourcenabzugsfunktion, die intern Ressourcenabzug und -kühlung aufruft
Fügen Sie hier eine Bildbeschreibung ein
Schauen Sie sich „Abklingzeit anwenden“ an, das die Fertigkeitsstufe übernimmt und die GE auf den ASC anwendet
Fügen Sie hier eine Bildbeschreibung ein
Auf die gleiche Weise werden Anwendungsressourcen verbraucht und es werden auch Qualifikationsniveaus erreicht.
Fügen Sie hier eine Bildbeschreibung ein

Legen Sie Fertigkeitsstufen fest, um unterschiedliche Manamengen zu verbrauchen

Jetzt wissen wir, dass der Einsatz von Fertigkeitsverbrauch die Menge an verbrauchtem Mana je nach Fertigkeitsstufe ändern kann. Mithilfe der Tabelle können wir verschiedene Stufen und den Manaverbrauch definieren.
Deshalb erstellen wir eine neue Kurventabelle, um den Manaverbrauch von Fertigkeiten auf verschiedenen Ebenen festzulegen.
Erstellen Sie eine Kurventabelle, wählen Sie als Typ „Konstant“ und legen Sie den Manaverbrauch auf jeder Ebene auf einen festen Wert fest.
Fügen Sie hier eine Bildbeschreibung ein
Benannt CT_Cost
Fügen Sie hier eine Bildbeschreibung ein
Addieren Sie intern den Manaverbrauch der Fertigkeit von Stufe 1 bis Stufe 10 von Feuerball.
Fügen Sie hier eine Bildbeschreibung ein
Verwenden Sie dann die Kurventabelle hier in GE, wählen Sie die erstellte Zeile aus und setzen Sie den Wert auf -1
Fügen Sie hier eine Bildbeschreibung ein
Ändern Sie dann die anfängliche Fähigkeitsstufe im Code zum Testen
Fügen Sie hier eine Bildbeschreibung ein
Nach dem Freigeben einer Fertigkeit ist die Manamenge dreimal so hoch wie zuvor, was beweist, dass es kein Problem mit den Einstellungen gibt.
Fügen Sie hier eine Bildbeschreibung ein

Abklingzeit der Fertigkeit hinzugefügt

Das Prinzip der Fertigkeitskühlung besteht darin, ASC während der Abkühlungsphase mit einem Kühltag zu versehen. Dieser Skill kann nicht erneut verwendet werden, solange der Kühltag vorhanden ist.
Um die Kühlung zu implementieren, erstellen wir zunächst ein Etikett für die Kühlung

FGameplayTag Cooldown_Fire_FireBolt; //火球术冷却标签
  • 1

Dann registrieren Sie sich beim Tag Manager

	GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get()
		.AddNativeGameplayTag(
			FName("Cooldown.Fire.FireBolt"),
			FString("火球术冷却标签")
			);
  • 1
  • 2
  • 3
  • 4
  • 5

Erzeugt einen Feuerball, um GE abzukühlen
Fügen Sie hier eine Bildbeschreibung ein
Ändern Sie GE in eine zeitkritische Has-Dauer
Fügen Sie hier eine Bildbeschreibung ein
Wie Sie hier sehen können, kann die Abkühlzeit mit den verschiedenen Methoden eingestellt werden, mit denen wir den Wert zuvor geändert haben. Hier verwenden wir die einfachste Methode und setzen sie direkt auf 1s.
Fügen Sie hier eine Bildbeschreibung ein
Wir müssen den charakterbezogenen Inhalt hier nicht ändern. Wir müssen dem ASC nur ein Kühl-Tag hinzufügen, wenn dieser GE in Kraft tritt. Wir fügen eine Target-Tags-Gameplay-Effektkomponente hinzu.
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie dem Akteur über diese Komponente ein Kühletikett hinzu und fügen Sie das von uns erstellte Kühletikett hinzu.
Fügen Sie hier eine Bildbeschreibung ein
Wenden Sie dann die Abklingzeit der Fertigkeit an
Fügen Sie hier eine Bildbeschreibung ein
Beim Test haben wir festgestellt, dass wir den Skill nur einmal pro Sekunde freigeben können.

Wir generieren im Allgemeinen nur eine Instanz einer Charakterfertigkeit für einen Charakter. Um zu verhindern, dass der Client die Fertigkeit ausschaltet, bevor die Fertigkeit ausgelöst wird, beenden wir die Fertigkeit, wenn die Montageanimation der Fertigkeit endet oder die Einmischung erfolgt zwangsweise abgebrochen werden, und wenn der Skill endet, kann die Montage weiter abgespielt werden.
Wir müssen auch die Funktion „Instanzierte Fähigkeit erneut auslösen“ aktivieren, damit sie bei erneuter Auslösung den vorherigen Auslöser deaktiviert.
Fügen Sie hier eine Bildbeschreibung ein

Follow-up: Jetzt haben wir den Verbrauch und er kann auf der Benutzeroberfläche korrekt angezeigt werden, aber die Kühlung wurde noch nicht implementiert. Nach der Verwendung des Skills kann der Fortschritt der Skill-Abkühlung nicht auf der Benutzeroberfläche des Skills angezeigt werden die Änderungen in der Kühlfähigkeit in der Zukunft und zeigen Sie sie über der Benutzeroberfläche an.