临时提交 我困了睡觉了

This commit is contained in:
DESKTOP-5RP3AKU\Jisol 2024-10-19 04:39:43 +08:00
parent 1315802fa2
commit 44e2735899
20 changed files with 213 additions and 37 deletions

View File

@ -26,7 +26,6 @@ namespace GAS.General
_startTimestamp = Timestamp(); _startTimestamp = Timestamp();
} }
private static long _pauseTimestamp; private static long _pauseTimestamp;
public static void Pause() public static void Pause()
{ {

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using GAS.General;
using UnityEngine; using UnityEngine;
namespace GAS.Runtime namespace GAS.Runtime
@ -26,6 +27,29 @@ namespace GAS.Runtime
private bool _ready; private bool _ready;
/// <summary>
/// 创建
/// </summary>
public virtual void OnCreate(){}
/// <summary>
/// 激活
/// </summary>
public virtual void OnEnable()
{
Prepare();
GameplayTagAggregator?.OnEnable();
Enable();
}
/// <summary>
/// 取消激活
/// </summary>
public virtual void OnDisable()
{
Disable();
}
private void Prepare() private void Prepare()
{ {
if (_ready) return; if (_ready) return;
@ -49,31 +73,6 @@ namespace GAS.Runtime
GameplayTagAggregator?.OnDisable(); GameplayTagAggregator?.OnDisable();
} }
private void Awake()
{
Prepare();
}
private void OnDestroy()
{
AttributeSetContainer.OnDestroy();
UserData = null;
}
private void OnEnable()
{
Prepare();
GameplayAbilitySystem.GAS.Register(this);
GameplayTagAggregator?.OnEnable();
Enable();
}
private void OnDisable()
{
Disable();
GameplayAbilitySystem.GAS.Unregister(this);
}
public void SetPreset(AbilitySystemComponentPreset ascPreset) public void SetPreset(AbilitySystemComponentPreset ascPreset)
{ {
preset = ascPreset; preset = ascPreset;
@ -399,6 +398,5 @@ namespace GAS.Runtime
{ {
GameplayEffectContainer.ClearGameplayEffect(); GameplayEffectContainer.ClearGameplayEffect();
} }
} }
} }

View File

@ -1,4 +1,6 @@
using GAS.General; using System.Collections.Generic;
using GAS.General;
using UnityEngine.Profiling;
namespace GAS.Runtime namespace GAS.Runtime
{ {
@ -7,23 +9,68 @@ namespace GAS.Runtime
/// </summary> /// </summary>
public class JexGasManager public class JexGasManager
{ {
public List<AbilitySystemComponent> AbilitySystemComponents = new();
/// <summary> /// <summary>
/// GAS 专用对象池 (只限制当前管理器) /// GAS 专用对象池 (只限制当前管理器)
/// </summary> /// </summary>
private JexGasObjectPool ObjectPool = new JexGasObjectPool(); private JexGasObjectPool ObjectPool = new JexGasObjectPool();
public static void Awake() //GAS 更新
public void Update()
{ {
Profiler.BeginSample($"{nameof(JexGasManager)}::Tick()");
var abilitySystemComponents = JexGasObjectPool.Instance.Fetch<List<AbilitySystemComponent>>();
abilitySystemComponents.AddRange(AbilitySystemComponents);
foreach (var abilitySystemComponent in abilitySystemComponents)
{
abilitySystemComponent.Tick();
}
abilitySystemComponents.Clear();
JexGasObjectPool.Instance.Recycle(abilitySystemComponents);
Profiler.EndSample();
}
/// <summary>
/// 委托 AbilitySystemComponent
/// </summary>
public void Register(AbilitySystemComponent abilitySystemComponent)
{
if (AbilitySystemComponents.Contains(abilitySystemComponent)) return;
AbilitySystemComponents.Add(abilitySystemComponent);
abilitySystemComponent.OnEnable();
} }
public static void Destroy() /// <summary>
/// 取消委托 AbilitySystemComponent
/// </summary>
public bool Unregister(AbilitySystemComponent abilitySystemComponent)
{ {
abilitySystemComponent.OnDisable();
return AbilitySystemComponents.Remove(abilitySystemComponent);
} }
public static void Update() /// <summary>
/// 创建 AbilitySystemComponent
/// </summary>
/// <returns></returns>
public T CreateAbilitySystemComponent<T>(AbilitySystemComponentPreset ascPreset,int level = 1) where T : AbilitySystemComponent, new()
{ {
var asc = new T();
asc.OnCreate();
asc.SetPreset(ascPreset);
asc.SetLevel(level);
Register(asc);
return asc;
} }
} }

View File

@ -12,13 +12,24 @@ namespace JNGame.Runtime.Sync.System.Logic
/// <summary> /// <summary>
/// GAS 管理器 /// GAS 管理器
/// </summary> /// </summary>
private JexGasManager _gas = new JexGasManager(); private JexGasManager _gas = new();
public JexGasManager GAS => _gas; public JexGasManager GAS => _gas;
public override void OnSyncStart() public override void OnSyncUpdate(int dt)
{ {
base.OnSyncStart(); GAS.Update();
} }
public void Register(AbilitySystemComponent abilitySystemComponent)
{
GAS.Register(abilitySystemComponent);
}
public bool Unregister(AbilitySystemComponent abilitySystemComponent)
{
return GAS.Unregister(abilitySystemComponent);
}
} }
} }

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c0b4adcd267e40ce862cac6801946216
timeCreated: 1729283406

View File

@ -0,0 +1,39 @@
using GAS.Runtime;
using GASSamples.Scripts.Game.GAS;
using JNGame.Runtime.Sync.System.Logic;
using JNGame.Sync.Entity.Component;
namespace GASSamples.Scripts.Game.Entity.Nodes.Component.Components
{
public class JNGASComponent : JNComponent
{
private GAbilitySystemComponent ASC = new ();
public override void OnSyncStart()
{
base.OnSyncStart();
//初始化ASC
GetSystem<JNGASSystem>().Register(ASC);
}
public void SetPreset(AbilitySystemComponentPreset ascPreset)
{
ASC.SetPreset(ascPreset);
}
public void SetLevel(int level)
{
ASC.SetLevel(level);
}
public override void OnSyncDestroy()
{
base.OnSyncDestroy();
//销毁ASC
GetSystem<JNGASSystem>().Unregister(ASC);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: acdb37e4e7c0494084eed1be8171efc6
timeCreated: 1729283417

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cef9fd36c2e54625bb161cf4062337b9
timeCreated: 1729282849

View File

@ -0,0 +1,22 @@
using GASSamples.Scripts.Game.Entity.Nodes.Component.Components;
using JNGame.Sync.Entity.Component;
namespace GASSamples.Scripts.Game.Entity.Nodes.Component.Controller
{
public class JNGASBoxController : JNComponent
{
public JNGASComponent GAS => Entity.GetComponent<JNGASComponent>();
public override void OnSyncStart()
{
base.OnSyncStart();
//设置GAS 角色
// GAS.SetPreset();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2ac7f2bb23fb47efb3a21d1160e962ac
timeCreated: 1729282871

View File

@ -1,3 +1,7 @@
using System;
using GASSamples.Scripts.Game.Entity.Nodes.Component.Components;
using GASSamples.Scripts.Game.Entity.Nodes.Component.Controller;
using JNGame.Runtime.Util.Types;
using JNGame.Sync.Entity.Component; using JNGame.Sync.Entity.Component;
namespace GASSamples.Scripts.Game.Entity.Nodes.Component.Lookup namespace GASSamples.Scripts.Game.Entity.Nodes.Component.Lookup
@ -5,5 +9,22 @@ namespace GASSamples.Scripts.Game.Entity.Nodes.Component.Lookup
public class JNGASBoxLookup : JNEntityLookup public class JNGASBoxLookup : JNEntityLookup
{ {
public int Controller { get; set; }
public int GAS { get; set; }
protected override void BindIndex()
{
base.BindIndex();
Controller = Next();
GAS = Next();
}
protected override void BindType(KeyValue<int, Type> types)
{
base.BindType(types);
types.Add(Controller,typeof(JNGASBoxController));
types.Add(GAS,typeof(JNGASComponent));
}
} }
} }

View File

@ -1,3 +1,4 @@
using GASSamples.Scripts.Game.Entity.Nodes.Component.Controller;
using GASSamples.Scripts.Game.Entity.Nodes.Component.Lookup; using GASSamples.Scripts.Game.Entity.Nodes.Component.Lookup;
using JNGame.Sync.Entity; using JNGame.Sync.Entity;
using JNGame.Sync.Entity.Component; using JNGame.Sync.Entity.Component;
@ -6,9 +7,13 @@ namespace GASSamples.Scripts.Game.Entity.Nodes
{ {
public class JNGASBox : JNEntity public class JNGASBox : JNEntity
{ {
public JNGASBoxController Controller => CLookup.Query<JNGASBoxController>(this);
public override JNEntityLookup NewCLookup() public override JNEntityLookup NewCLookup()
{ {
return new JNGASBoxLookup(); return new JNGASBoxLookup();
} }
} }
} }

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 09af0fe6bc634405a389bf3e8640507c
timeCreated: 1729283193

View File

@ -0,0 +1,11 @@
using GAS.Runtime;
namespace GASSamples.Scripts.Game.GAS
{
public class GAbilitySystemComponent : AbilitySystemComponent
{
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f91a65c731e64bceb375e9f6eb571dd1
timeCreated: 1729283247

View File

@ -4,6 +4,7 @@ using GASSamples.Scripts.Game.Entity;
using GASSamples.Scripts.Game.Logic.Data; using GASSamples.Scripts.Game.Logic.Data;
using GASSamples.Scripts.Game.Logic.System; using GASSamples.Scripts.Game.Logic.System;
using GASSamples.Scripts.Game.View; using GASSamples.Scripts.Game.View;
using JNGame.Runtime.Sync.System.Logic;
using JNGame.Sync.Entity; using JNGame.Sync.Entity;
using JNGame.Sync.Frame; using JNGame.Sync.Frame;
using JNGame.Sync.System; using JNGame.Sync.System;
@ -20,6 +21,7 @@ namespace DefaultNamespace
{ {
//基础数据 //基础数据
new DInputSystem(), //游戏输入 new DInputSystem(), //游戏输入
new JNGASSystem(), //GAS 系统
new DWorldSystem(), //世界逻辑 new DWorldSystem(), //世界逻辑
}; };
} }

View File

@ -74,8 +74,12 @@
<Analyzer Include="C:\APP\UnityEdit\2022.3.16f1c1\Editor\Data\Tools\Unity.SourceGenerators\Unity.Properties.SourceGenerator.dll" /> <Analyzer Include="C:\APP\UnityEdit\2022.3.16f1c1\Editor\Data\Tools\Unity.SourceGenerators\Unity.Properties.SourceGenerator.dll" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\Entity\Nodes\Component\Components\JNGASComponent.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\Entity\Nodes\Component\Controller\JNGASBoxController.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\Entity\Nodes\Component\Lookup\JNGASBoxLookup.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\Entity\Nodes\Contexts\JNGASBoxContext.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\GAS\GAbilitySystemComponent.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\GAS\OngoingAbilityTasks\OngoingAbility_Debug.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\GAS\OngoingAbilityTasks\OngoingAbility_Debug.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\Entity\Contexts\JNGASBoxContext.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\View\DViewSystem.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\Game\View\DViewSystem.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Gen\GAttrLib.gen.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\Gen\GAttrLib.gen.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\GAS\GameplayCue\GameplayCue_PlayerDemo01.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\GAS\GameplayCue\GameplayCue_PlayerDemo01.cs" />
@ -87,7 +91,6 @@
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\Logic\System\DWorldSystem.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\Game\Logic\System\DWorldSystem.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\App.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\App.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Gen\GTagLib.gen.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\Gen\GTagLib.gen.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Game\Entity\Nodes\Component\Lookup\JNGASBoxLookup.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\AbilitySystemSamplesComponent.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\AbilitySystemSamplesComponent.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Gen\AbilitySystemComponentExtension.gen.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\Gen\AbilitySystemComponentExtension.gen.cs" />
<Compile Include="Assets\Scripts\GASSamples\Scripts\Gen\GAbilityLib.gen.cs" /> <Compile Include="Assets\Scripts\GASSamples\Scripts\Gen\GAbilityLib.gen.cs" />