void Awake() { var system = World.DefaultGameObjectInjectionWorld.GetExistingSystem <ConvertToEntitySystem>(); if (ConversionTarget.HasFlag(TargetWorld.Default)) { system.AddToBeConverted(World.DefaultGameObjectInjectionWorld, this); } foreach (World world in World.All) { bool convertToClient = world.GetExistingSystem <ClientSimulationSystemGroup>() != null; bool convertToServer = world.GetExistingSystem <ServerSimulationSystemGroup>() != null; convertToClient &= ConversionTarget.HasFlag(TargetWorld.Client); convertToServer &= ConversionTarget.HasFlag(TargetWorld.Server); if (convertToClient || convertToServer) { system.AddToBeConverted(world, this); } } }
void Awake() { foreach (World world in World.All) { bool convertToClient = world.GetExistingSystem <ClientSimulationSystemGroup>() != null; bool convertToServer = world.GetExistingSystem <ServerSimulationSystemGroup>() != null; convertToClient &= ConversionTarget.HasFlag(TargetWorld.Client); convertToServer &= ConversionTarget.HasFlag(TargetWorld.Server); if (convertToClient || convertToServer) { Scene scene = world.GetLinkedScene(); foreach (Transform o in transform) { GameObject obj = Instantiate(o.gameObject); SceneManager.MoveGameObjectToScene(obj, scene); } } } Destroy(gameObject); }
/// <summary> /// 分类系统 /// </summary> /// <param name="type"></param> /// <param name="target"></param> /// <param name="explicitWorld"></param> protected internal static void AddToSystems(Type type, TargetWorld target, bool explicitWorld = true) { if (target.HasFlag(TargetWorld.Default)) { if (explicitWorld) { SystemStates.ExplicitDefaultWorldSystems.Add(type); } else { SystemStates.DefaultWorldSystems.Add(type); } } if (target.HasFlag(TargetWorld.Client)) { SystemStates.ClientSystems.Add(type); } if (target.HasFlag(TargetWorld.Server)) { SystemStates.ServerSystems.Add(type); } }