Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of DroneBoomBox v1.0.0
REPO_BoomBox.dll
Decompiled a year agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Photon.Pun; using REPOLib.Modules; using UnityEngine; using UnityEngine.Audio; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("REPO_BoomBox")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("微软中国")] [assembly: AssemblyProduct("REPO_BoomBox")] [assembly: AssemblyCopyright("Copyright © 微软中国 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3d8e9ce1-f685-430e-a7cf-19c498264c25")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace REPO_BoomBox; [BepInPlugin("com.XiaohaiMod.REPO.BoomBox", "Xiaohai_HealBoomBox", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public static Item item; public ConfigEntry<bool> healPlayer; public ConfigEntry<int> healAmount; public ConfigEntry<int> healSecond; public ConfigEntry<float> batteryDrain; public ConfigEntry<bool> spawnMust; public ConfigEntry<int> valueMin; public ConfigEntry<int> valueMax; public ConfigEntry<int> probability; public ConfigEntry<int> language; public static ManualLogSource logger; public static Plugin instance; public static AudioMixerGroup[] groups; public void Awake() { //IL_030e: Unknown result type (might be due to invalid IL or missing references) instance = this; logger = ((BaseUnityPlugin)this).Logger; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Xiaohai_HealBoomBox插件加载成功!"); healPlayer = ((BaseUnityPlugin)this).Config.Bind<bool>("BoomBox", "healPlayer", true, "是否恢复玩家生命值 / Enable health regeneration for the player"); healSecond = ((BaseUnityPlugin)this).Config.Bind<int>("BoomBox", "healCooldownSecond", 1, "每次单位时间(秒)恢复一次体力(比如:1为每秒,5为每5秒) / Time interval between each heal (in seconds)"); healAmount = ((BaseUnityPlugin)this).Config.Bind<int>("BoomBox", "healAmount", 1, "每次单位时间秒的恢复生命值量 / Health points restored per healing interval"); batteryDrain = ((BaseUnityPlugin)this).Config.Bind<float>("BoomBox", "batteryDrainRate", 0.2f, "每秒电量消耗量 / Battery consumption per second"); spawnMust = ((BaseUnityPlugin)this).Config.Bind<bool>("BoomBox", "spawnMust", true, "是否设置成一定在商店出现?false为随缘 / Force item to always appear in shop (false = random chance)"); probability = ((BaseUnityPlugin)this).Config.Bind<int>("BoomBox", "percentageProbability", 33, "如果为随缘出现,在商店出现的百分比概率(0-100,大于100或者小于0都取33) / Spawn probability percentage when not guaranteed (0-100)"); valueMin = ((BaseUnityPlugin)this).Config.Bind<int>("BoomBox", "valueMin", 3000, "商品最低价格(最高和最低中取随机价格) / Minimum item price (randomized between min/max)"); valueMax = ((BaseUnityPlugin)this).Config.Bind<int>("BoomBox", "valueMax", 6000, "商品最高价格(最高和最低中取随机价格) / Maximum item price (randomized between min/max)"); language = ((BaseUnityPlugin)this).Config.Bind<int>("BoomBox", "language", 0, "0=简体中文,other number=English"); if (probability.Value > 100 || probability.Value < 0) { probability.Value = 33; } string location = Assembly.GetExecutingAssembly().Location; string directoryName = Path.GetDirectoryName(location); string text = Path.Combine(directoryName, "boombox"); AssetBundle val = AssetBundle.LoadFromFile(text); item = val.LoadAsset<Item>("item Boombox"); AudioMixer val2 = val.LoadAsset<AudioMixer>("Sound"); if ((Object)(object)val2 != (Object)null) { logger.LogInfo((object)"资源加载成!"); groups = val2.FindMatchingGroups("Sound"); AudioMixerGroup[] array = groups; foreach (AudioMixerGroup val3 in array) { logger.LogInfo((object)("找到音效:" + ((Object)val3).name + "!")); } } if ((Object)(object)item != (Object)null) { if (language.Value == 0) { item.itemName = "音响"; } else { item.itemName = "BoomBox"; } Items.RegisterItem(item); ((BaseUnityPlugin)this).Logger.LogInfo((object)("加载预制体成功!" + item.itemName)); item.prefab.AddComponent<ItemDroneBoombox>(); item.value.valueMin = valueMin.Value; item.value.valueMax = valueMax.Value; new Harmony("com.XiaohaiMod.REPO.BoomBox").PatchAll(); } else { ((BaseUnityPlugin)this).Logger.LogInfo((object)"加载预制体失败!"); } } } public static class Patch { [HarmonyPatch(typeof(StatsManager))] public static class StatsManagerPatch { [HarmonyPatch("Awake")] [HarmonyPostfix] public static void AwakePatch(StatsManager __instance) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown if ((Object)(object)Object.FindObjectOfType<AudioLoader>() == (Object)null) { Plugin.logger.LogInfo((object)"创建新游戏对象并附加自定义组件"); GameObject val = new GameObject("MyCustomObject"); Object.DontDestroyOnLoad((Object)(object)val); val.SetActive(true); val.AddComponent<AudioLoader>(); } } } [HarmonyPatch(typeof(PunManager))] public static class PunManagerPatch { private static bool spawned; private static bool needSpawn; [HarmonyPatch("SpawnShopItem")] [HarmonyPostfix] public static void SpawnShopItemPatch(PunManager __instance, ref List<Item> itemList) { if (GameManager.instance.gameMode == 1 && !PhotonNetwork.IsMasterClient) { return; } if (itemList.Contains(Plugin.item)) { spawned = true; } else { if (spawned) { return; } if (Plugin.instance.spawnMust.Value) { needSpawn = true; return; } int value = Plugin.instance.probability.Value; int num = Random.Range(0, 100); if (num < value) { needSpawn = true; } } } [HarmonyPatch("SpawnShopItem")] [HarmonyPrefix] public static void SpawnShopItemPatch_Pre(PunManager __instance, ref List<Item> itemList) { if (needSpawn && !spawned) { itemList.Add(Plugin.item); needSpawn = true; spawned = false; } } } } public class ItemDroneBoombox : MonoBehaviourPun { public AudioClip[] boomBoxClips; public Sound boomboxSound; public bool healPlayer = true; public int healAmount = 1; public float batteryDrain = 0.1f; private ItemDrone itemDrone; private PhysGrabObject myPhysGrabObject; private ItemEquippable itemEquippable; private ItemBattery itemBattery; private bool isPlayingMusic = false; private int currentClipIndex = 0; private float healTimer = 0f; public GUIStyle style; private void Start() { //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Expected O, but got Unknown Plugin.logger.LogInfo((object)$"healPlayer:{healPlayer},healAmount:{healAmount},batteryDrain:{batteryDrain}"); itemDrone = ((Component)this).GetComponent<ItemDrone>(); myPhysGrabObject = ((Component)this).GetComponent<PhysGrabObject>(); itemEquippable = ((Component)this).GetComponent<ItemEquippable>(); itemBattery = ((Component)this).GetComponent<ItemBattery>(); GameObject gameObject = ((Component)this).gameObject; AudioSource val = gameObject.AddComponent<AudioSource>(); val.volume = 1f; val.minDistance = 1f; val.maxDistance = 20f; val.spatialBlend = 1f; val.reverbZoneMix = 1f; val.rolloffMode = (AudioRolloffMode)1; AudioMixerGroup val2 = null; AudioMixerGroup[] groups = Plugin.groups; foreach (AudioMixerGroup val3 in groups) { if (((Object)val3).name == "Sound Effects") { val2 = val3; break; } } Plugin.logger.LogInfo((object)$"targetGroup为{val.outputAudioMixerGroup}"); boomboxSound = new Sound { Volume = 0.1f, VolumeRandom = 0f, Pitch = 1f, PitchRandom = 0f, SpatialBlend = 1f, Doppler = 1f, ReverbMix = 1f, FalloffMultiplier = 1f, OffscreenVolume = 0.8f, OffscreenFalloff = 1f, Type = (AudioType)0, Source = val, Sounds = boomBoxClips }; if (AudioLoader.instance.loadedClips.Count != 0) { boomBoxClips = AudioLoader.instance.loadedClips.ToArray(); boomboxSound.Sounds = boomBoxClips; } Plugin.logger.LogInfo((object)"音频组件初始化成功!Boombox Script loaded successfully"); if (GameManager.instance.gameMode == 0 || PhotonNetwork.IsMasterClient) { healPlayer = Plugin.instance.healPlayer.Value; healAmount = Plugin.instance.healAmount.Value; batteryDrain = Plugin.instance.batteryDrain.Value; StopMusic(); if (SemiFunc.IsMultiplayer() && PhotonNetwork.IsMasterClient) { ((MonoBehaviourPun)this).photonView.RPC("RPC_SyncConfig", (RpcTarget)4, new object[3] { healPlayer, healAmount, batteryDrain }); } } } private void OnGUI() { //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) if (itemDrone.itemActivated && itemDrone.magnetActive && (Object)(object)itemDrone.playerAvatarTarget != (Object)null && itemDrone.targetIsLocalPlayer) { style = GUI.skin.GetStyle("label"); style.fontSize = 15; style.normal.textColor = Color.blue; style.richText = true; if (Plugin.instance.language.Value == 0) { GUI.Label(new Rect(10f, 10f, 520f, 100f), $"当前播放:{((Object)boomBoxClips[currentClipIndex]).name} \n 按[ ]来上/下一首,按=和-来加/减音量,当前音量(0-100): {boomboxSound.Volume * 100f} 傀鹏&小海联合出品.", style); } else { GUI.Label(new Rect(10f, 10f, 520f, 100f), $"Playing:{((Object)boomBoxClips[currentClipIndex]).name} \nPress [ ] to play the previous/next song, press = and - to increase/decrease the volume. Current volume (0-100): {boomboxSound.Volume * 100f} By Xiaohai&KP.", style); } } } private void Update() { if (itemDrone.itemActivated && itemDrone.magnetActive && (Object)(object)itemDrone.playerAvatarTarget != (Object)null && itemDrone.targetIsLocalPlayer) { if (Input.GetKeyDown((KeyCode)91)) { PlayPrevious(); } else if (Input.GetKeyDown((KeyCode)93)) { PlayNext(); } if (Input.GetKeyDown((KeyCode)61)) { boomboxSound.Volume = Mathf.Clamp01(boomboxSound.Volume + 0.02f); ((MonoBehaviourPun)this).photonView.RPC("RPC_SyncVolume", (RpcTarget)0, new object[1] { boomboxSound.Volume }); } else if (Input.GetKeyDown((KeyCode)45)) { boomboxSound.Volume = Mathf.Clamp01(boomboxSound.Volume - 0.02f); ((MonoBehaviourPun)this).photonView.RPC("RPC_SyncVolume", (RpcTarget)0, new object[1] { boomboxSound.Volume }); } } } private void PlayNext() { if (boomBoxClips != null && boomBoxClips.Length != 0) { int index = (currentClipIndex + 1) % boomBoxClips.Length; PlayMusic(index); } } private void PlayPrevious() { if (boomBoxClips != null && boomBoxClips.Length != 0) { int index = (currentClipIndex - 1 + boomBoxClips.Length) % boomBoxClips.Length; PlayMusic(index); } } private void PlayMusic(int index) { //IL_0072: Unknown result type (might be due to invalid IL or missing references) if (isPlayingMusic) { StopMusic(); } if (SemiFunc.IsMultiplayer()) { ((MonoBehaviourPun)this).photonView.RPC("RPC_PlayMusic", (RpcTarget)0, new object[1] { index }); return; } currentClipIndex = index; boomboxSound.Sounds = (AudioClip[])(object)new AudioClip[1] { boomBoxClips[index] }; boomboxSound.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); Plugin.logger.LogInfo((object)("播放音乐: " + ((Object)boomBoxClips[index]).name)); isPlayingMusic = true; } private void StopMusic() { if (SemiFunc.IsMultiplayer()) { ((MonoBehaviourPun)this).photonView.RPC("RPC_StopMusic", (RpcTarget)0, Array.Empty<object>()); } else { RPC_StopMusic(); } } private void FixedUpdate() { if (itemEquippable.isEquipped) { return; } if (GameManager.instance.gameMode == 1 && !PhotonNetwork.IsMasterClient) { UpdateMusicPlayback(); } else if (itemDrone.itemActivated) { myPhysGrabObject.OverrideZeroGravity(0.1f); myPhysGrabObject.OverrideDrag(1f, 0.1f); myPhysGrabObject.OverrideAngularDrag(10f, 0.1f); if (itemDrone.itemActivated && boomBoxClips != null && !isPlayingMusic) { PlayMusic((currentClipIndex >= 0) ? currentClipIndex : 0); } BatteryDrain(batteryDrain); if (healPlayer && itemDrone.itemActivated && itemDrone.magnetActive && (Object)(object)itemDrone.playerAvatarTarget != (Object)null) { healTimer += Time.fixedDeltaTime; PlayerHealth playerHealth = itemDrone.playerAvatarTarget.playerHealth; if (healTimer >= (float)Plugin.instance.healSecond.Value) { if (playerHealth.health < playerHealth.maxHealth) { playerHealth.HealOther(healAmount, false); } healTimer = 0f; } } else { healTimer = 0f; } } else if (isPlayingMusic) { StopMusic(); } } private void UpdateMusicPlayback() { if (currentClipIndex != -1 && !boomboxSound.Source.isPlaying) { PlayMusic(currentClipIndex); } } [PunRPC] private void RPC_PlayMusic(int clipIndex) { //IL_006a: Unknown result type (might be due to invalid IL or missing references) if (boomBoxClips == null || clipIndex < 0 || clipIndex >= boomBoxClips.Length) { Debug.LogError((object)$"无效的音乐索引: {clipIndex}"); return; } currentClipIndex = clipIndex; boomboxSound.Sounds = (AudioClip[])(object)new AudioClip[1] { boomBoxClips[clipIndex] }; boomboxSound.Play(((Component)this).transform.position, 1f, 1f, 1f, 1f); Plugin.logger.LogInfo((object)("播放音乐: " + ((Object)boomBoxClips[clipIndex]).name)); isPlayingMusic = true; } [PunRPC] private void RPC_StopMusic() { boomboxSound.Stop(); isPlayingMusic = false; currentClipIndex = -1; } [PunRPC] private void RPC_SyncConfig(bool syncHealPlayer, int syncHealAmount, float syncBatteryDrain) { healPlayer = syncHealPlayer; healAmount = syncHealAmount; batteryDrain = syncBatteryDrain; } [PunRPC] private void RPC_SyncVolume(float syncVolume) { boomboxSound.Volume = syncVolume; boomboxSound.Source.volume = boomboxSound.Volume; Plugin.logger.LogInfo((object)$"音量已修改至 Volume Change : {boomboxSound.Volume:F2}"); } private void BatteryDrain(float amount) { ItemBattery obj = itemBattery; obj.batteryLife -= amount * Time.fixedDeltaTime; } } public class AudioLoader : MonoBehaviour { [CompilerGenerated] private sealed class <LoadAudioClip>d__6 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public string filePath; public AudioLoader <>4__this; private AudioType <audioType>5__1; private string <extension>5__2; private string <uri>5__3; private string <>s__4; private UnityWebRequest <www>5__5; private AudioClip <clip>5__6; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadAudioClip>d__6(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <extension>5__2 = null; <uri>5__3 = null; <>s__4 = null; <www>5__5 = null; <clip>5__6 = null; <>1__state = -2; } private bool MoveNext() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Invalid comparison between Unknown and I4 //IL_009a: Unknown result type (might be due to invalid IL or missing references) try { switch (<>1__state) { default: return false; case 0: { <>1__state = -1; <audioType>5__1 = (AudioType)0; <extension>5__2 = Path.GetExtension(filePath).ToLower(); string text = <extension>5__2; <>s__4 = text; switch (<>s__4) { case ".mp3": <audioType>5__1 = (AudioType)13; break; case ".wav": <audioType>5__1 = (AudioType)20; break; case ".ogg": <audioType>5__1 = (AudioType)14; break; default: Plugin.logger.LogWarning((object)("目录不存在 Directory does not exist: " + <extension>5__2)); return false; } <>s__4 = null; <uri>5__3 = "file://" + filePath; <www>5__5 = UnityWebRequestMultimedia.GetAudioClip(<uri>5__3, <audioType>5__1); <>1__state = -3; <>2__current = <www>5__5.SendWebRequest(); <>1__state = 1; return true; } case 1: <>1__state = -3; if ((int)<www>5__5.result == 2) { Plugin.logger.LogError((object)("目录不存在 Directory does not exist: " + <www>5__5.error)); } else { <clip>5__6 = DownloadHandlerAudioClip.GetContent(<www>5__5); if ((Object)(object)<clip>5__6 != (Object)null) { ((Object)<clip>5__6).name = Path.GetFileNameWithoutExtension(filePath); <>4__this.loadedClips.Add(<clip>5__6); Plugin.logger.LogInfo((object)("Loaded: " + ((Object)<clip>5__6).name)); } <clip>5__6 = null; } <>m__Finally1(); <www>5__5 = null; return false; } } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; if (<www>5__5 != null) { ((IDisposable)<www>5__5).Dispose(); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <LoadAudioFilesFromDirectory>d__5 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AudioLoader <>4__this; private string[] <allowedExtensions>5__1; private List<string> <audioFiles>5__2; private string[] <>s__3; private int <>s__4; private string <file>5__5; private string <extension>5__6; private List<string>.Enumerator <>s__7; private string <filePath>5__8; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadAudioFilesFromDirectory>d__5(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <allowedExtensions>5__1 = null; <audioFiles>5__2 = null; <>s__3 = null; <file>5__5 = null; <extension>5__6 = null; <>s__7 = default(List<string>.Enumerator); <filePath>5__8 = null; <>1__state = -2; } private bool MoveNext() { try { switch (<>1__state) { default: return false; case 0: <>1__state = -1; if (!Directory.Exists(<>4__this.directoryPath)) { Plugin.logger.LogError((object)("目录不存在 Directory does not exist: " + <>4__this.directoryPath)); return false; } <allowedExtensions>5__1 = new string[3] { ".mp3", ".wav", ".ogg" }; <audioFiles>5__2 = new List<string>(); <>s__3 = Directory.GetFiles(<>4__this.directoryPath); for (<>s__4 = 0; <>s__4 < <>s__3.Length; <>s__4++) { <file>5__5 = <>s__3[<>s__4]; <extension>5__6 = Path.GetExtension(<file>5__5).ToLower(); if (<allowedExtensions>5__1.Contains(<extension>5__6)) { <audioFiles>5__2.Add(<file>5__5); } <extension>5__6 = null; <file>5__5 = null; } <>s__3 = null; <>s__7 = <audioFiles>5__2.GetEnumerator(); <>1__state = -3; break; case 1: <>1__state = -3; <filePath>5__8 = null; break; } if (<>s__7.MoveNext()) { <filePath>5__8 = <>s__7.Current; <>2__current = ((MonoBehaviour)<>4__this).StartCoroutine(<>4__this.LoadAudioClip(<filePath>5__8)); <>1__state = 1; return true; } <>m__Finally1(); <>s__7 = default(List<string>.Enumerator); if (<>4__this.loadedClips.Count > 0) { <>4__this.loadFinished = true; Plugin.logger.LogInfo((object)"音乐加载完成 Music loaded"); } return false; } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; ((IDisposable)<>s__7).Dispose(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public string directoryPath; public List<AudioClip> loadedClips = new List<AudioClip>(); public static AudioLoader instance; public bool loadFinished = false; private void Start() { Plugin.logger.LogInfo((object)"音乐加载开始.."); instance = this; string location = Assembly.GetExecutingAssembly().Location; string directoryName = Path.GetDirectoryName(location); directoryPath = directoryName + "/Music"; if (loadedClips.Count <= 0) { Plugin.logger.LogInfo((object)("音乐目录 Music directory: " + directoryPath + "开始加载..")); ((MonoBehaviour)this).StartCoroutine(LoadAudioFilesFromDirectory()); } } [IteratorStateMachine(typeof(<LoadAudioFilesFromDirectory>d__5))] private IEnumerator LoadAudioFilesFromDirectory() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadAudioFilesFromDirectory>d__5(0) { <>4__this = this }; } [IteratorStateMachine(typeof(<LoadAudioClip>d__6))] private IEnumerator LoadAudioClip(string filePath) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadAudioClip>d__6(0) { <>4__this = this, filePath = filePath }; } }