您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

109 行
2.8 KiB

using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using UnityEngine;
public class SystemCollection
{
List<ScriptBehaviourManager> systems = new List<ScriptBehaviourManager>();
public void Add(ScriptBehaviourManager system)
{
systems.Add(system);
}
public void Update()
{
foreach (var system in systems)
system.Update();
}
public void Shutdown(World world)
{
foreach (var system in systems)
world.DestroyManager(system);
}
}
public abstract class CharacterModuleShared
{
protected GameWorld m_world;
protected SystemCollection m_ControlledEntityChangedSystems = new SystemCollection();
protected SystemCollection m_HandleSpawnSystems = new SystemCollection();
protected SystemCollection m_HandleDespawnSystems = new SystemCollection();
protected SystemCollection m_MovementStartSystems = new SystemCollection();
protected SystemCollection m_MovementResolveSystems = new SystemCollection();
protected SystemCollection m_AbilityStartSystems = new SystemCollection();
protected SystemCollection m_AbilityResolveSystems = new SystemCollection();
#if UNITY_EDITOR
readonly StoreStateHistory m_storeStateHistory;
#endif
public CharacterModuleShared(GameWorld world)
{
m_world = world;
#if UNITY_EDITOR
m_storeStateHistory = m_world.GetECSWorld().CreateManager<StoreStateHistory>(m_world);
#endif
}
public virtual void Shutdown()
{
m_ControlledEntityChangedSystems.Shutdown(m_world.GetECSWorld());
m_HandleSpawnSystems.Shutdown(m_world.GetECSWorld());
m_HandleDespawnSystems.Shutdown(m_world.GetECSWorld());
m_MovementStartSystems.Shutdown(m_world.GetECSWorld());
m_MovementResolveSystems.Shutdown(m_world.GetECSWorld());
m_AbilityStartSystems.Shutdown(m_world.GetECSWorld());
m_AbilityResolveSystems.Shutdown(m_world.GetECSWorld());
#if UNITY_EDITOR
m_world.GetECSWorld().DestroyManager(m_storeStateHistory);
#endif
}
public void HandleSpawns()
{
m_HandleSpawnSystems.Update();
}
public void HandleDepawns()
{
m_HandleSpawnSystems.Update();
}
public void HandleControlledEntityChanged()
{
m_ControlledEntityChangedSystems.Update();
}
public void MovementStart()
{
m_MovementStartSystems.Update();
}
public void MovementResolve()
{
m_MovementResolveSystems.Update();
}
public void AbilityStart()
{
m_AbilityStartSystems.Update();
}
public void AbilityResolve()
{
m_AbilityResolveSystems.Update();
#if UNITY_EDITOR
m_storeStateHistory.Update();
#endif
}
}