Esempio n. 1
0
        public static bool ModPatch_AssetBundle(AssetBundleSheet __instance, string filePath, ref string __result)
        {
            string text = filePath.ToLower().Trim();

            if (__instance.FilesInfo.ContainsKey(text))
            {
                __result = __instance.BundleList[__instance.FilesInfo[text]].AssetBundleName;
            }
            else
            {
                Debug.Log("沒有包到這個路徑的檔案:" + text);
                __result = null;
            }
            return(false);
        }
Esempio n. 2
0
        public ModResourceProvider(ICoroutineRunner runner, string modBaseDir, string[] modPaths) : base(runner)
        {
            for (int i = 0; i < modPaths.Length; ++i)
            {
                string dir = Path.Combine(modBaseDir, modPaths[i]);
                if (Directory.Exists(dir))
                {
                    Console.WriteLine("检测到Mod路径: " + dir);
                    ModDirectories.Add(dir);

                    string zip = Path.Combine(dir, "Config.zip");
                    if (File.Exists(zip))
                    {
                        Console.WriteLine("检测到压缩格式Mod档案: " + zip);
                        ZipFile zipFile = ZipFile.Read(zip);
                        ZipEntries.Add(dir, zipFile.ToDictionary((ZipEntry x) => x.FileName.ToLower(), (ZipEntry x) => x));
                    }

                    // 扩展AssetBundleSheet
                    string extraSheetFile = Path.Combine(dir, "AssetBundleSheet.sheet");
                    if (File.Exists(extraSheetFile))
                    {
                        Console.WriteLine("检测到扩展AssetBundleSheet: " + extraSheetFile);
                        byte[]           array       = File.ReadAllBytes(extraSheetFile);
                        AssetBundleSheet modSheet    = JsonConvert.DeserializeObject <AssetBundleSheet>(Encoding.UTF8.GetString(array));
                        AssetBundleSheet sourceSheet = Traverse.Create(BundleManagerBySheet.Instance()).Field("bundleSheet").GetValue <AssetBundleSheet>();
                        Console.WriteLine(string.Format("扩展Sheet bundle={0}, file={1}", modSheet.BundleList.Count, modSheet.FilesInfo.Count));
                        Console.WriteLine(string.Format("原始Sheet bundle={0}, file={1}", sourceSheet.BundleList.Count, sourceSheet.FilesInfo.Count));
                        foreach (var bundle in modSheet.BundleList)
                        {
                            sourceSheet.BundleList.Add(bundle.Key, bundle.Value);
                        }
                        foreach (var file in modSheet.FilesInfo)
                        {
                            sourceSheet.FilesInfo.Add(file.Key, file.Value);
                        }
                        Console.WriteLine(string.Format("合并Sheet bundle={0}, file={1}", sourceSheet.BundleList.Count, sourceSheet.FilesInfo.Count));
                    }
                }
            }
        }