public virtual bool Initialize(string defaultWorldName) { World defaultWorld = new World(defaultWorldName); World.DefaultGameObjectInjectionWorld = defaultWorld; var systems = DefaultWorldInitialization.GetAllSystems(WorldSystemFilterFlags.Default); GenerateSystemList(systems); DefaultWorldInitialization.AddSystemsToRootLevelSystemGroups(defaultWorld, SystemStates.ExplicitDefaultWorldSystems); ScriptBehaviourUpdateOrder.AddWorldToCurrentPlayerLoop(defaultWorld); Config = GetBootstrapConfig(); #if !UNITY_SERVER || UNITY_EDITOR if (Config.StartupWorld.HasFlag(TargetWorld.Client)) { for (int i = 0; i < Config.ClientNum; i++) { CreateClientWorld(defaultWorld, "ClientWorld" + i); } } #endif #if UNITY_SERVER || UNITY_EDITOR if (Config.StartupWorld.HasFlag(TargetWorld.Server)) { CreateServerWorld(defaultWorld, "ServerWorld"); } #endif return(true); }
protected virtual BootstrapConfig GetBootstrapConfig() { BootstrapConfig config = Resources.Load <BootstrapConfig>(nameof(BootstrapConfig)); if (config == null) { config = ScriptableObject.CreateInstance <BootstrapConfig>(); } return(config); }