コード例 #1
0
    public void Dispose()
    {
        if (!isLoaded)
        {
            throw new System.Exception("Cannot unload assets before fully loaded!");
        }

        backend.Dispose();
        backend = null;

        SceneManager.UnloadSceneAsync(scene);
    }
コード例 #2
0
    public PrefabLookup(string bundlename)
    {
        backend = new AssetBundleBackend(bundlename);

        var lookupAsset = backend.Load <TextAsset>(lookupPath);

        lookup = new HashLookup(lookupAsset.text);

        var asyncOperation = SceneManager.LoadSceneAsync(scenePath, LoadSceneMode.Additive);

        scene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);

        asyncOperation.completed += (operation) =>
        {
            foreach (var go in scene.GetRootGameObjects())
            {
                prefabs.Add(lookup[go.name], go);
            }
        };
    }
コード例 #3
0
    private IEnumerator Start()
    {
        WriteToLog("Bootstrap Startup");
        BenchmarkTimer.Enabled = Facepunch.Utility.CommandLine.Full.Contains("+autobench");
        BenchmarkTimer timer = BenchmarkTimer.New("bootstrap");

        if (!UnityEngine.Application.isEditor)
        {
            ExceptionReporter.InitializeFromUrl("https://*****:*****@sentry.io/51080");
            ExceptionReporter.Disabled = !Facepunch.Utility.CommandLine.Full.Contains("-official") && !Facepunch.Utility.CommandLine.Full.Contains("-server.official") && !Facepunch.Utility.CommandLine.Full.Contains("+official") && !Facepunch.Utility.CommandLine.Full.Contains("+server.official");
            BuildInfo current = BuildInfo.Current;
            if (current.Scm.Branch != null && current.Scm.Branch.StartsWith("main"))
            {
                ExceptionReporter.InitializeFromUrl("https://*****:*****@sentry.io/1836389");
                ExceptionReporter.Disabled = false;
            }
        }
        if (AssetBundleBackend.Enabled)
        {
            AssetBundleBackend newBackend = new AssetBundleBackend();
            using (BenchmarkTimer.New("bootstrap;bundles"))
            {
                yield return(StartCoroutine(LoadingUpdate("Opening Bundles")));

                newBackend.Load("Bundles/Bundles");
                FileSystem.Backend = newBackend;
            }
            if (FileSystem.Backend.isError)
            {
                ThrowError(FileSystem.Backend.loadingError);
                yield break;
            }
            using (BenchmarkTimer.New("bootstrap;bundlesindex"))
            {
                newBackend.BuildFileIndex();
            }
        }
        if (FileSystem.Backend.isError)
        {
            ThrowError(FileSystem.Backend.loadingError);
            yield break;
        }
        if (!UnityEngine.Application.isEditor)
        {
            WriteToLog(SystemInfoGeneralText.currentInfo);
        }
        UnityEngine.Texture.SetGlobalAnisotropicFilteringLimits(1, 16);
        if (isErrored)
        {
            yield break;
        }
        using (BenchmarkTimer.New("bootstrap;gamemanifest"))
        {
            yield return(StartCoroutine(LoadingUpdate("Loading Game Manifest")));

            GameManifest.Load();
            yield return(StartCoroutine(LoadingUpdate("DONE!")));
        }
        using (BenchmarkTimer.New("bootstrap;selfcheck"))
        {
            yield return(StartCoroutine(LoadingUpdate("Running Self Check")));

            SelfCheck.Run();
        }
        if (isErrored)
        {
            yield break;
        }
        yield return(StartCoroutine(LoadingUpdate("Bootstrap Tier0")));

        using (BenchmarkTimer.New("bootstrap;tier0"))
        {
            Init_Tier0();
        }
        using (BenchmarkTimer.New("bootstrap;commandlinevalues"))
        {
            ConsoleSystem.UpdateValuesFromCommandLine();
        }
        yield return(StartCoroutine(LoadingUpdate("Bootstrap Systems")));

        using (BenchmarkTimer.New("bootstrap;init_systems"))
        {
            Init_Systems();
        }
        yield return(StartCoroutine(LoadingUpdate("Bootstrap Config")));

        using (BenchmarkTimer.New("bootstrap;init_config"))
        {
            Init_Config();
        }
        if (!isErrored)
        {
            yield return(StartCoroutine(LoadingUpdate("Loading Items")));

            using (BenchmarkTimer.New("bootstrap;itemmanager"))
            {
                ItemManager.Initialize();
            }
            if (!isErrored)
            {
                yield return(StartCoroutine(DedicatedServerStartup()));

                timer?.Dispose();
                GameManager.Destroy(base.gameObject);
            }
        }
    }