AudioTool.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. /**
  2. * 魔力宝贝图档解析脚本 - CGTool
  3. *
  4. * @Author HonorLee (dev@honorlee.me)
  5. * @Version 1.0 (2023-08-26)
  6. * @License GPL-3.0
  7. *
  8. * AudioTool.cs 音频工具
  9. * 本工具用于加载音频AudioClip,音频文件位于Assets/Resources/Audio目录下并使用Resources.Load加载
  10. * 请将Crossgate的音频目录bgm、se拷贝到Assets/Resources/Audio目录下
  11. * 如有其他需要可调整加载方式
  12. */
  13. using System.Collections.Generic;
  14. using UnityEngine;
  15. namespace CGTool
  16. {
  17. public static class AudioTool
  18. {
  19. // 背景音频缓存
  20. private static Dictionary<int, AudioClip> _bgmDic = new Dictionary<int, AudioClip>();
  21. // 声效音频缓存
  22. private static Dictionary<int, AudioClip> _effectDic = new Dictionary<int, AudioClip>();
  23. public enum Type
  24. {
  25. BGM,
  26. EFFECT
  27. }
  28. // 获取指定类型、编号的音频AudioClip
  29. public static AudioClip GetAudio(Type type, int id)
  30. {
  31. AudioClip audioClip;
  32. Dictionary<int,AudioClip> dic = type == Type.BGM ? _bgmDic : _effectDic;
  33. if (dic.TryGetValue(id, out audioClip))
  34. {
  35. return audioClip;
  36. }
  37. else
  38. {
  39. Dictionary<int,string> map = type == Type.BGM ? _bgmMap : _effectMap;
  40. if(map.TryGetValue(id, out string audioPath))
  41. {
  42. audioClip = UnityEngine.Resources.Load<AudioClip>(audioPath);
  43. return audioClip;
  44. }
  45. else
  46. {
  47. // Debug.LogError("Audio not found: " + id);
  48. }
  49. }
  50. return null;
  51. }
  52. private static Dictionary<int, string> _bgmMap = new Dictionary<int, string>()
  53. {
  54. [200] = "Audio/bgm/cgbgm_m0",
  55. [201] = "Audio/bgm/cgbgm_m1",
  56. [202] = "Audio/bgm/cgbgm_m2",
  57. [203] = "Audio/bgm/cgbgm_m3",
  58. [204] = "Audio/bgm/cgbgm_m4",
  59. [209] = "Audio/bgm/cgbgm_f0",
  60. [210] = "Audio/bgm/cgbgm_f1",
  61. [211] = "Audio/bgm/cgbgm_f2",
  62. [212] = "Audio/bgm/cgbgm_d0",
  63. [213] = "Audio/bgm/cgbgm_d1",
  64. [214] = "Audio/bgm/cgbgm_d2",
  65. [215] = "Audio/bgm/cgbgm_d3",
  66. [216] = "Audio/bgm/cgbgm_d4",
  67. [205] = "Audio/bgm/cgbgm_b0",
  68. [206] = "Audio/bgm/cgbgm_b1",
  69. [207] = "Audio/bgm/cgbgm_b2",
  70. [208] = "Audio/bgm/cgbgm_b3",
  71. [217] = "Audio/bgm/cgbgm_t0",
  72. [219] = "Audio/bgm/exbgm_s0",
  73. [220] = "Audio/bgm/exbgm_f0",
  74. [221] = "Audio/bgm/exbgm_m0",
  75. [222] = "Audio/bgm/v2bgm_f0",
  76. [223] = "Audio/bgm/v2bgm_m0",
  77. [224] = "Audio/bgm/v2bgm_ex",
  78. [225] = "Audio/bgm/v2bgm_ex",
  79. [226] = "Audio/bgm/puk2_battle1",
  80. [227] = "Audio/bgm/puk2_battle2",
  81. [228] = "Audio/bgm/puk2_field1",
  82. [229] = "Audio/bgm/puk2_mati",
  83. [230] = "Audio/bgm/puk2_sinden",
  84. [231] = "Audio/bgm/puk2_yama",
  85. [232] = "Audio/bgm/puk2_haikyo",
  86. [233] = "Audio/bgm/puk2_m_town",
  87. [234] = "Audio/bgm/puk2_OP",
  88. [235] = "Audio/bgm/puk3_battle1",
  89. [236] = "Audio/bgm/puk3_battle2",
  90. [237] = "Audio/bgm/puk3_dungeon",
  91. [238] = "Audio/bgm/puk3_kame",
  92. [239] = "Audio/bgm/puk3_kujira",
  93. [240] = "Audio/bgm/puk3_kumo",
  94. [241] = "Audio/bgm/puk3_love",
  95. [242] = "Audio/bgm/puk3_playerbattle",
  96. [243] = "Audio/bgm/PUK3_title",
  97. };
  98. private static Dictionary<int, string> _effectMap = new Dictionary<int, string>()
  99. {
  100. [1] = "Audio/se/cgnat00",
  101. [2] = "Audio/se/cgnat01",
  102. [3] = "Audio/se/cgnat02",
  103. [4] = "Audio/se/cgnat03",
  104. [5] = "Audio/se/cgnat04",
  105. [6] = "Audio/se/cgnat05a",
  106. [7] = "Audio/se/cgnat05b",
  107. [8] = "Audio/se/cgnat06a",
  108. [9] = "Audio/se/cgnat06b",
  109. [10] = "Audio/se/cgnat07",
  110. [11] = "Audio/se/cgnat08",
  111. [12] = "Audio/se/cgnat09",
  112. [13] = "Audio/se/cgnat10",
  113. [14] = "Audio/se/cgnat11",
  114. [15] = "Audio/se/exnat00",
  115. [16] = "Audio/se/v2mon150a",
  116. [17] = "Audio/se/34sand_clock",
  117. [18] = "Audio/se/35sand_clock",
  118. [19] = "Audio/se/36wind",
  119. [20] = "Audio/se/37bird",
  120. [21] = "Audio/se/puk3_Wind01",
  121. [22] = "Audio/se/puk3_Wind02",
  122. [23] = "Audio/se/puk3_Wind03",
  123. [24] = "Audio/se/puk3_gaya01",
  124. [25] = "Audio/se/puk3_drop01",
  125. [26] = "Audio/se/puk3_drop02",
  126. [51] = "Audio/se/cgsys00",
  127. [52] = "Audio/se/cgsys01",
  128. [53] = "Audio/se/cgsys02",
  129. [54] = "Audio/se/cgsys03",
  130. [55] = "Audio/se/cgsys04",
  131. [56] = "Audio/se/cgsys05",
  132. [57] = "Audio/se/cgsys06",
  133. [58] = "Audio/se/cgsys07",
  134. [59] = "Audio/se/cgsys08",
  135. [60] = "Audio/se/cgsys09",
  136. [61] = "Audio/se/cgsys10a",
  137. [62] = "Audio/se/cgsys10b",
  138. [63] = "Audio/se/cgsys11",
  139. [64] = "Audio/se/cgsys12",
  140. [65] = "Audio/se/cgsys13a",
  141. [66] = "Audio/se/cgsys13b",
  142. [67] = "Audio/se/cgsys13c",
  143. [68] = "Audio/se/cgsys14",
  144. [69] = "Audio/se/cgsys15",
  145. [71] = "Audio/se/cgsys17",
  146. [72] = "Audio/se/cgsys18",
  147. [73] = "Audio/se/cgsys19",
  148. [74] = "Audio/se/cgsys20",
  149. [75] = "Audio/se/cgsys21",
  150. [76] = "Audio/se/cgsys22",
  151. [77] = "Audio/se/cgsys23",
  152. [78] = "Audio/se/cgsys24",
  153. [79] = "Audio/se/cgsys25",
  154. [101] = "Audio/se/cgply00a",
  155. [102] = "Audio/se/cgply00b",
  156. [103] = "Audio/se/cgply01a",
  157. [104] = "Audio/se/cgply01b",
  158. [105] = "Audio/se/cgply02a",
  159. [106] = "Audio/se/cgply02b",
  160. [107] = "Audio/se/cgply03a",
  161. [108] = "Audio/se/cgply03b",
  162. [109] = "Audio/se/cgply04a",
  163. [110] = "Audio/se/cgply04b",
  164. [111] = "Audio/se/cgply05a",
  165. [112] = "Audio/se/cgply05b",
  166. [113] = "Audio/se/cgply06a1",
  167. [114] = "Audio/se/cgply06b1",
  168. [115] = "Audio/se/cgply06a2",
  169. [116] = "Audio/se/cgply06b2",
  170. [117] = "Audio/se/cgply07a",
  171. [118] = "Audio/se/cgply07b",
  172. [131] = "Audio/se/cgply06a2",
  173. [132] = "Audio/se/cgply06b2",
  174. [133] = "Audio/se/cgply11a",
  175. [134] = "Audio/se/cgply11b",
  176. [135] = "Audio/se/cgply12a",
  177. [136] = "Audio/se/cgply12b",
  178. [137] = "Audio/se/cgply13a",
  179. [138] = "Audio/se/cgply13b",
  180. [139] = "Audio/se/cgply14a",
  181. [140] = "Audio/se/cgply14b",
  182. [141] = "Audio/se/cgply15",
  183. [142] = "Audio/se/cgply16",
  184. [143] = "Audio/se/cgply17",
  185. [147] = "Audio/se/cgply00a",
  186. [150] = "Audio/se/cgply11b",
  187. [151] = "Audio/se/cgmon00a",
  188. [152] = "Audio/se/cgmon00b",
  189. [153] = "Audio/se/cgmon01",
  190. [154] = "Audio/se/cgmon02a",
  191. [155] = "Audio/se/cgmon02b",
  192. [156] = "Audio/se/cgmon03b",
  193. [157] = "Audio/se/cgmon10",
  194. [158] = "Audio/se/cgmon20",
  195. [159] = "Audio/se/cgmon24",
  196. [160] = "Audio/se/cgmon30",
  197. [161] = "Audio/se/cgmon31",
  198. [162] = "Audio/se/cgmon41",
  199. [163] = "Audio/se/cgmon43",
  200. [164] = "Audio/se/cgmon50a",
  201. [165] = "Audio/se/cgmon50b",
  202. [166] = "Audio/se/cgmon51",
  203. [167] = "Audio/se/cgmon52",
  204. [168] = "Audio/se/cgmon60",
  205. [169] = "Audio/se/cgmon61",
  206. [171] = "Audio/se/cgmon63",
  207. [172] = "Audio/se/cgmon90",
  208. [173] = "Audio/se/cgmon91",
  209. [174] = "Audio/se/cgmon92",
  210. [175] = "Audio/se/cgmon93",
  211. [180] = "Audio/se/cgmon_bs1",
  212. [181] = "Audio/se/cgmon_bs2",
  213. [182] = "Audio/se/cgmon_bs3",
  214. [183] = "Audio/se/cgmon_bs4",
  215. [184] = "Audio/se/cgmon_bh1",
  216. [185] = "Audio/se/cgmon_bh2",
  217. [186] = "Audio/se/cgmon_bh3",
  218. [187] = "Audio/se/cgmon_bh4",
  219. [190] = "Audio/se/cgmon_m00",
  220. [191] = "Audio/se/cgmon_m01",
  221. [192] = "Audio/se/cgmon_m02",
  222. [198] = "Audio/se/cgmon_sample01",
  223. [199] = "Audio/se/cgmon_sample02",
  224. [200] = "Audio/se/cgmon_sample03",
  225. [201] = "Audio/se/cgbtl00",
  226. [202] = "Audio/se/cgbtl01",
  227. [204] = "Audio/se/cgbtl03",
  228. [205] = "Audio/se/cgbtl04",
  229. [206] = "Audio/se/cgbtl05",
  230. [207] = "Audio/se/cgbtl06",
  231. [208] = "Audio/se/cgbtl07",
  232. [209] = "Audio/se/cgbtl08",
  233. [210] = "Audio/se/cgbtl09",
  234. [211] = "Audio/se/cgbtl10",
  235. [212] = "Audio/se/cgbtl11",
  236. [213] = "Audio/se/cgbtl12",
  237. [214] = "Audio/se/cgbtl13",
  238. [215] = "Audio/se/cgbtl14",
  239. [216] = "Audio/se/cgbtl15",
  240. [217] = "Audio/se/cgbtl16",
  241. [218] = "Audio/se/cgbtl17",
  242. [251] = "Audio/se/cgefc00",
  243. [252] = "Audio/se/cgefc01",
  244. [253] = "Audio/se/cgefc02",
  245. [254] = "Audio/se/cgefc03",
  246. [255] = "Audio/se/cgefc04",
  247. [256] = "Audio/se/cgefc05",
  248. [257] = "Audio/se/cgefc06",
  249. [258] = "Audio/se/cgefc07",
  250. [259] = "Audio/se/cgefc08",
  251. [260] = "Audio/se/cgefc09",
  252. [261] = "Audio/se/cgefc10",
  253. [262] = "Audio/se/cgefc11",
  254. [263] = "Audio/se/cgefc12",
  255. [264] = "Audio/se/cgefc13",
  256. [266] = "Audio/se/cgefc15",
  257. [267] = "Audio/se/cgefc16",
  258. [268] = "Audio/se/cgefc17",
  259. [269] = "Audio/se/cgefc18",
  260. [270] = "Audio/se/cgefc19",
  261. [271] = "Audio/se/cgefc20",
  262. [272] = "Audio/se/cgefc21",
  263. [273] = "Audio/se/cgefc22",
  264. [274] = "Audio/se/cgefc23",
  265. [275] = "Audio/se/cgefc24",
  266. [276] = "Audio/se/cgefc25",
  267. [277] = "Audio/se/cgefc26",
  268. [278] = "Audio/se/cgefc27",
  269. [279] = "Audio/se/cgefc28",
  270. [280] = "Audio/se/cgefc29",
  271. [281] = "Audio/se/cgefc30",
  272. [282] = "Audio/se/cgefc31",
  273. [283] = "Audio/se/cgefc32",
  274. [284] = "Audio/se/cgefc33",
  275. [285] = "Audio/se/cgefc34",
  276. [286] = "Audio/se/cgefc35",
  277. [287] = "Audio/se/cgefc36",
  278. [288] = "Audio/se/cgefc37a",
  279. [289] = "Audio/se/cgefc37b",
  280. [290] = "Audio/se/cgefc37c",
  281. [291] = "Audio/se/cgefc38",
  282. [296] = "Audio/se/v2monex1",
  283. [297] = "Audio/se/v2monex2",
  284. [298] = "Audio/se/v2monex3",
  285. [300] = "Audio/se/v2mon100",
  286. [301] = "Audio/se/v2mon110",
  287. [302] = "Audio/se/v2mon111a",
  288. [303] = "Audio/se/v2mon111b",
  289. [304] = "Audio/se/v2mon120",
  290. [305] = "Audio/se/v2mon121a",
  291. [306] = "Audio/se/v2mon121b",
  292. [307] = "Audio/se/v2mon121c",
  293. [308] = "Audio/se/v2mon130",
  294. [309] = "Audio/se/v2mon140",
  295. [310] = "Audio/se/v2mon150a",
  296. [311] = "Audio/se/v2mon150b",
  297. [312] = "Audio/se/v2mon161",
  298. [313] = "Audio/se/v2mon170a",
  299. [314] = "Audio/se/v2mon170b",
  300. [315] = "Audio/se/v2mon171a",
  301. [316] = "Audio/se/v2mon171b",
  302. [317] = "Audio/se/v2mon190",
  303. [318] = "Audio/se/v2mon191",
  304. [319] = "Audio/se/v2monex0",
  305. [400] = "Audio/se/01small_amae_new",
  306. [401] = "Audio/se/02small_normal",
  307. [402] = "Audio/se/02small_normal_new",
  308. [403] = "Audio/se/03small_iyaiya",
  309. [404] = "Audio/se/03small_iyaiya_new",
  310. [405] = "Audio/se/04fish_normal",
  311. [406] = "Audio/se/05fish_shout",
  312. [407] = "Audio/se/06fish_amae",
  313. [408] = "Audio/se/09kame_amae",
  314. [409] = "Audio/se/10yagi_shout",
  315. [410] = "Audio/se/11yagi_normal",
  316. [411] = "Audio/se/12yagi_amae",
  317. [412] = "Audio/se/13bird_normal",
  318. [413] = "Audio/se/14bird_shout",
  319. [414] = "Audio/se/15bird_amae",
  320. [415] = "Audio/se/16fish_normal",
  321. [416] = "Audio/se/17fish_shout",
  322. [417] = "Audio/se/18kame_normal",
  323. [418] = "Audio/se/19kame_shout",
  324. [419] = "Audio/se/20animal_normal",
  325. [420] = "Audio/se/21animal_shout",
  326. [421] = "Audio/se/22bird_normal",
  327. [422] = "Audio/se/23bird_shout",
  328. [423] = "Audio/se/24Monstor",
  329. [424] = "Audio/se/25_1_off",
  330. [425] = "Audio/se/26ground_on",
  331. [426] = "Audio/se/27ground_off",
  332. [427] = "Audio/se/28_water_on",
  333. [428] = "Audio/se/29_water_of",
  334. [429] = "Audio/se/30fire_on",
  335. [430] = "Audio/se/31fire_of",
  336. [431] = "Audio/se/32_wind_on",
  337. [432] = "Audio/se/32_wind_on2",
  338. [433] = "Audio/se/33_wind_off",
  339. [435] = "Audio/se/36wind",
  340. [436] = "Audio/se/37bird",
  341. [437] = "Audio/se/38make_gild",
  342. [438] = "Audio/se/39levelup",
  343. };
  344. }
  345. }