提交Cue案例

This commit is contained in:
DESKTOP-5RP3AKU\Jisol
2024-10-26 02:35:38 +08:00
parent 6cf78b53bb
commit 1ad20b67da
72 changed files with 24536 additions and 1264 deletions

View File

@@ -1,51 +0,0 @@
using System.Collections.Generic;
using GAS.General;
namespace GAS.Runtime
{
/// <summary>
/// Cue 处理
/// </summary>
public abstract partial class AbilitySystemComponent : IAbilitySystemComponent, IPool
{
/// <summary>
/// AbilitySpec 唯一Id
/// </summary>
private Dictionary<AbilitySpec, int> AbilitySpecId = new();
/// <summary>
/// Ability的Timeline轨道触发了持续型Cue的添加
/// </summary>
/// <param name="abilitySpec"></param>
/// <param name="cueAssetLocation">Cue资源地址</param>
/// <param name="durationTime">持续时间</param>
/// <returns></returns>
public int OnCueAdd(AbilitySpec abilitySpec, string cueAssetLocation, int durationTime)
{
return 0;
}
/// <summary>
/// Ability的Timeline轨道触发了持续型Cue的移除
/// </summary>
/// <param name="abilitySpec"></param>
/// <param name="cueClipIndex"></param>
public void OnCueRemove(AbilitySpec abilitySpec, int cueClipIndex)
{
}
/// <summary>
/// Ability的Timeline轨道触发了瞬时Cue的触发
/// </summary>
/// <param name="abilitySpec"></param>
/// <param name="cueAssetLocations"></param>
public void OnCueExecute(AbilitySpec abilitySpec, string[] cueAssetLocations)
{
}
}
}

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: fd84ebd1383e4e009578ebd2daae3200
timeCreated: 1729704061

View File

@@ -341,6 +341,29 @@ namespace GAS.Runtime
/// <param name="geSpec"></param>
public abstract void OnGERelease(GameplayEffectSpec geSpec);
/// <summary>
/// Ability的Timeline轨道触发了持续型Cue的添加
/// </summary>
/// <param name="abilitySpec"></param>
/// <param name="cueAssetLocation">Cue资源地址</param>
/// <param name="durationTime">持续时间</param>
/// <returns></returns>
public abstract int OnCueAdd(AbilitySpec abilitySpec, string cueAssetLocation, int durationTime);
/// <summary>
/// Ability的Timeline轨道触发了持续型Cue的移除
/// </summary>
/// <param name="abilitySpec"></param>
/// <param name="cueClipIndex"></param>
public abstract void OnCueRemove(AbilitySpec abilitySpec, int cueClipIndex);
/// <summary>
/// Ability的Timeline轨道触发了瞬时Cue的触发
/// </summary>
/// <param name="abilitySpec"></param>
/// <param name="cueAssetLocations"></param>
public abstract void OnCueExecute(AbilitySpec abilitySpec, string[] cueAssetLocations);
/// <summary>
/// Ability结束激活
/// </summary>

View File

@@ -30,6 +30,15 @@ namespace GAS.Runtime
return durationalCue;
}
public GameplayCueDurationalSpec ApplyFrom(params object[] customArguments)
{
var durationalCue = CreateSpec(new GameplayCueParameters
{
customArguments = customArguments
});
return durationalCue;
}
#if UNITY_EDITOR
public virtual void OnEditorPreview(UnityEngine.GameObject previewObject, int frameIndex, int startFrame, int endFrame)
{
@@ -49,6 +58,7 @@ namespace GAS.Runtime
public abstract void OnGameplayEffectActivate();
public abstract void OnGameplayEffectDeactivate();
public abstract void OnTick(int frame,int startFrame,int endFrame);
public abstract void OnTick(int deltaTime);
}
public abstract class GameplayCueDurationalSpec<T> : GameplayCueDurationalSpec where T : GameplayCueDurational

View File

@@ -1,3 +1,5 @@
using UnityEngine;
namespace GAS.Runtime
{
public struct GameplayCueParameters

View File

@@ -415,6 +415,7 @@ namespace GAS.Runtime
if (frame >= cueClip.startFrame && frame <= cueClip.endFrame)
{
cueClip.cueSpec.OnTick(frame,cueClip.startFrame,cueClip.endFrame);
cueClip.cueSpec.OnTick(deltaTime);
}
if (frame == cueClip.endFrame)