/// <summary> /// 加载模组包 /// </summary> /// <param name="packagePath">模组包路径</param> /// <param name="initialize">是否立即初始化模组包</param> /// <returns>返回模组包UID</returns> public GameMod LoadGameMod(string packagePath, bool initialize = true) { GameMod mod = FindGameModByPath(packagePath); if (mod != null) { GameLogger.Warning(TAG, "Mod \"{0}\" already registered, skip", packagePath); return(mod); } //路径处理 if (StringUtils.IsUrl(packagePath)) { GameLogger.Error(TAG, "不支持从 URL 加载模组包 \"{0}\" ,请将其先下载至 streamingAssetsPath 后再加载。", packagePath); return(null); } //处理路径至mod文件夹路径 if (!File.Exists(packagePath) && !GamePathManager.IsAbsolutePath(packagePath)) { packagePath = GamePathManager.GetResRealPath("mod", packagePath); } if (!File.Exists(packagePath)) { GameLogger.Error(TAG, "Mod file \"{0}\" not exists", packagePath); return(null); } mod = new GameMod(packagePath, this); if (!mod.Init()) { return(null); } if (!gameMods.Contains(mod)) { gameMods.Add(mod); } GameManager.GameMediator.DispatchGlobalEvent(GameEventNames.EVENT_MOD_REGISTERED, "*", mod.PackageName, mod); GameLogger.Log(TAG, "Register mod \"{0}\"", packagePath); if (initialize) { mod.Load(this); } return(mod); }
private GameActionCallResult OnCallLoadLevel(params object[] param) { if (levelLoadStatus == LevelLoadStatus.Loading || levelLoadStatus == LevelLoadStatus.UnLoading) { GameErrorManager.LastError = GameError.InProgress; return(GameActionCallResult.CreateActionCallResult(false)); } if (levelLoadStatus != LevelLoadStatus.NotLoad) { GameErrorManager.LastError = GameError.AlredayLoaded; return(GameActionCallResult.CreateActionCallResult(false)); } string pathOrName = (string)param[0]; string levelPath = ""; int number; if (int.TryParse(pathOrName, out number)) { if (number < 15) { levelPath = GamePathManager.GetResRealPath("core", "levels/Level" + number + ".ballance"); } } else { if (GamePathManager.IsAbsolutePath(pathOrName)) { levelPath = pathOrName; } else { levelPath = GamePathManager.GetResRealPath("level", pathOrName); } } EnterLoader(); StartCoroutine(LoadLevel(levelPath)); return(GameActionCallResult.CreateActionCallResult(true)); }