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
Daher werden wir als nächstes GE verwenden, um die Abkühlung und den Verbrauch von Fähigkeiten festzulegen.
Wir erstellen zunächst einen Entwurf und die ausgewählte übergeordnete Klasse ist Gameplay Effect
Nennen Sie es GE_Cost_FireBolt, was die Kosten des Feuerballs bedeutet.
Um unsere Dauer zu verbrauchen, wählen Sie „Sofort“.
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.
Es wird ein einfacher Verbrauchs-GE erstellt und wir wenden ihn auf Fertigkeiten an
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.
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.
Testeffekt ausführen
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.
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.
Wir schauen uns den Quellcode an und der Code, den er aufruft, ist K2_CommitAbility
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.
CommExecute ist eine Ressourcenabzugsfunktion, die intern Ressourcenabzug und -kühlung aufruft
Schauen Sie sich „Abklingzeit anwenden“ an, das die Fertigkeitsstufe übernimmt und die GE auf den ASC anwendet
Auf die gleiche Weise werden Anwendungsressourcen verbraucht und es werden auch Qualifikationsniveaus erreicht.
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.
Benannt CT_Cost
Addieren Sie intern den Manaverbrauch der Fertigkeit von Stufe 1 bis Stufe 10 von Feuerball.
Verwenden Sie dann die Kurventabelle hier in GE, wählen Sie die erstellte Zeile aus und setzen Sie den Wert auf -1
Ändern Sie dann die anfängliche Fähigkeitsstufe im Code zum Testen
Nach dem Freigeben einer Fertigkeit ist die Manamenge dreimal so hoch wie zuvor, was beweist, dass es kein Problem mit den Einstellungen gibt.
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; //火球术冷却标签
Dann registrieren Sie sich beim Tag Manager
GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get()
.AddNativeGameplayTag(
FName("Cooldown.Fire.FireBolt"),
FString("火球术冷却标签")
);
Erzeugt einen Feuerball, um GE abzukühlen
Ändern Sie GE in eine zeitkritische Has-Dauer
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.
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 dem Akteur über diese Komponente ein Kühletikett hinzu und fügen Sie das von uns erstellte Kühletikett hinzu.
Wenden Sie dann die Abklingzeit der Fertigkeit an
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.
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.