{"id":1879,"date":"2021-07-22T20:36:48","date_gmt":"2021-07-22T12:36:48","guid":{"rendered":"http:\/\/lonelinerd.com\/?p=1879"},"modified":"2022-10-16T21:54:50","modified_gmt":"2022-10-16T13:54:50","slug":"unity-rhythm-game-part-8","status":"publish","type":"post","link":"https:\/\/lonelinerd.com\/index.php\/2021\/07\/22\/unity-rhythm-game-part-8\/","title":{"rendered":"\u300aUnity\u3067\u4f5c\u308b\u30ea\u30ba\u30e0\u30b2\u30fc\u30e0\u300b\u5b78\u7fd2\u7b46\u8a18\uff08\u516b\uff09\uff1a\u300c\u66f2\u76ee\u64ad\u653e\u300d"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1879\" class=\"elementor elementor-1879\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7f15700 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7f15700\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7211c3d\" data-id=\"7211c3d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e52f139 elementor-widget elementor-widget-text-editor\" data-id=\"e52f139\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><b>\u66f8\u540d\uff1a\u300aUnity\u3067\u4f5c\u308b\u30ea\u30ba\u30e0\u30b2\u30fc\u30e0\u300b<\/b><\/p><p><strong>\u4f5c\u8005\uff1a\u9577\u5d0e\u5927\u5b66\u30de\u30eb\u30c1\u30e1\u30c7\u30a3\u30a2\u7814\u7a76\u4f1a<\/strong><\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5ffcafc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5ffcafc\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b9e49a0\" data-id=\"b9e49a0\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8679010 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"8679010\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b4f7ff1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b4f7ff1\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1d73fe5\" data-id=\"1d73fe5\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6d88388 elementor-widget elementor-widget-text-editor\" data-id=\"6d88388\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4 class=\"md-end-block md-heading\"><span style=\"text-decoration: underline;\"><strong><span class=\"md-plain md-expand\">\u64ad\u653e\u66f2\u76ee<\/span><\/strong><\/span><\/h4><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u904a\u6232\u7684<span style=\"color: #ff0000;\">\u6548\u679c\u97f3\u53ef\u4ee5\u901a\u904eAudioSource.PlayClipAtPoint<\/span>\u4f86\u64ad\u653e\uff0c\u5728NoteBaseController\u4e2d\u6dfb\u52a0\u4e00\u500bAudioClip\uff0c\u4e26\u5728OnKeyDown\u548cOnKeyUp\u7684\u6642\u5019\u9032\u884c\u8abf\u7528<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">abstract<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">NoteControllerBase<\/span> : <span class=\"cm-variable\">MonoBehaviour<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  [<span class=\"cm-variable\">SerializeField<\/span>] <span class=\"cm-keyword\">protected<\/span> <span class=\"cm-variable\">AudioClip<\/span> <span class=\"cm-variable\">clipHit<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">null<\/span>; <span class=\"cm-comment\">\/\/\u6548\u679c\u97f3<\/span><\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-comment\">\/\/SingleNoteController<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">override<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">OnKeyDown<\/span>(<span class=\"cm-variable\">JudgementType<\/span> <span class=\"cm-variable\">judgementType<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">judgementType<\/span> <span class=\"cm-operator\">!=<\/span> <span class=\"cm-variable\">JudgementType<\/span>.<span class=\"cm-variable\">MISS<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">AudioSource<\/span>.<span class=\"cm-variable\">PlayClipAtPoint<\/span>(<span class=\"cm-variable\">clipHit<\/span>, <span class=\"cm-variable\">transform<\/span>.<span class=\"cm-variable\">position<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/LongNoteController<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">override<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">OnKeyDown<\/span>(<span class=\"cm-variable\">JudgementType<\/span> <span class=\"cm-variable\">judgementType<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">judgementType<\/span> <span class=\"cm-operator\">!=<\/span> <span class=\"cm-variable\">JudgementType<\/span>.<span class=\"cm-variable\">MISS<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">AudioSource<\/span>.<span class=\"cm-variable\">PlayClipAtPoint<\/span>(<span class=\"cm-variable\">clipHit<\/span>, <span class=\"cm-variable\">transform<\/span>.<span class=\"cm-variable\">position<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">override<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">OnKeyUp<\/span>(<span class=\"cm-variable\">JudgementType<\/span> <span class=\"cm-variable\">judgementType<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">AudioSource<\/span>.<span class=\"cm-variable\">PlayClipAtPoint<\/span>(<span class=\"cm-variable\">clipHit<\/span>, <span class=\"cm-variable\">transform<\/span>.<span class=\"cm-variable\">position<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u66f2\u76ee\u5177\u9ad4\u7684\u6a02\u66f2\u64ad\u653e<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u5728bms\u6587\u4ef6\u4e2d\uff0c\u6709\u5c08\u9580\u64ad\u653e\u97f3\u6e90\u7684\u547d\u4ee4\uff0c\u901a\u904e\u628a\u97f3\u6e90\u52a0\u5230BGM\u901a\u9053\u4e0a\uff0c\u5f9e\u800c\u628a\u64ad\u653e\u97f3\u6e90\u7684\u547d\u4ee4\u6dfb\u52a0\u5230bms\u6587\u4ef6\u4e2d\u3002\u5728\u628a\u97f3\u6e90\u548c\u5c0d\u61c9\u7684\u97f3\u6e90\u7269\u4ef6\u5206\u914d\u597d\u5f8c\uff0cbms\u6587\u6a94\u6703\u591a\u51fa\u4e00\u6bb5\u6307\u5411\u97f3\u6e90\u6587\u4ef6\u7684\u4ee3\u78bc<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u5728\u672c\u6848\u4f8b\u4e2d\uff0c\u7de8\u865f01\u662f\u97f3\u6e90\u6587\u4ef6\u7684\u901a\u9053\uff0c\u53ea\u8981\u628a\u97f3\u6a02\u6587\u4ef6\u5206\u914d\u5230#WAV01\u865f\u4e2d\uff0c\u7136\u5f8c\u628a01\u5c0d\u8c61\u653e\u7f6e\u5728BGM\u901a\u9053\u4e2d\uff0c\u97f3\u6a02\u5373\u53ef\u64ad\u653e<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u97f3\u6e90\u6dfb\u52a0\u6d41\u7a0b<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u628a\u97f3\u6e90\u6587\u4ef6\u653e\u5230Beatmap\u7684\u6587\u4ef6\u593e\u4e2d<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u5275\u5efa\u4e00\u500bBms\u6587\u4ef6\uff0c\u4e26\u5728#WAV\u5340\u57df\u5167\uff0c\u628a\u97f3\u6e90\u6587\u4ef6\u653e\u5230\u7de8\u865f01\u7684\u683c\u5b50\u4e2d<\/span><\/p><\/li><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u628a\u7de8\u865f01\u7684\u7269\u9ad4\u8a2d\u7f6e\u5728BPM\u8ecc\u9053\u7684\u7b2c0\u5c0f\u7bc0\u958b\u59cb\u4f4d\u7f6e\u4e0a<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-287922e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"287922e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-597f5e3\" data-id=\"597f5e3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d2c3f94 elementor-widget elementor-widget-image\" data-id=\"d2c3f94\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"957\" height=\"733\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_33.png\" class=\"attachment-large size-large wp-image-1881\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_33.png 957w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_33-300x230.png 300w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_33-768x588.png 768w\" sizes=\"auto, (max-width: 957px) 100vw, 957px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7fcb988 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7fcb988\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-92a1386\" data-id=\"92a1386\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b075aa1 elementor-widget elementor-widget-text-editor\" data-id=\"b075aa1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<ul><li style=\"list-style-type: none;\"><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u8a72Bms\u6587\u4ef6\u7684\u8868\u8ff0\u70ba\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"bms\" spellcheck=\"false\"><span role=\"presentation\">*---------------------- HEADER FIELD<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\">#PLAYER 1<\/span><br \/><span role=\"presentation\">#GENRE Electric<\/span><br \/><span role=\"presentation\">#TITLE Vitality t+pazolite Remix<\/span><br \/><span role=\"presentation\">#ARTIST t+pazolite &amp; Mittsies<\/span><br \/><span role=\"presentation\">#BPM 175<\/span><br \/><span role=\"presentation\">#PLAYLEVEL 9<\/span><br \/><span role=\"presentation\">#RANK 1<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\">#LNTYPE 1<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\">#WAV01 Vitality.wav<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\">*---------------------- MAIN DATA FIELD<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\">#00001:01<\/span><\/pre><\/li><\/ul><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u97f3\u6e90\u6587\u4ef6\u540d<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"bms\" spellcheck=\"false\"><span style=\"color: #ff0000;\" role=\"presentation\">#WAV01 Vitality.wav<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u5177\u9ad4\u6578\u64da\u4fe1\u606f<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"bms\" spellcheck=\"false\"><span style=\"color: #ff0000;\" role=\"presentation\">#00001:01<\/span><\/pre><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">000\u5c0f\u7bc0<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">BGM\u901a\u9053\uff08\u901a\u9053\u7de8\u865f01\uff09<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u7269\u9ad4\u672c\u8eab\uff08\u7269\u9ad4\u7de8\u865f01\uff09<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-end-block md-p\"><span class=\"md-plain\">\u8b80\u53d6\u97f3\u6e90\u4fe1\u606f\u53ca\u6587\u4ef6<\/span><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">BmsLoader<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">Header\u6b63\u5247\u90e8\u5206\u6dfb\u52a0\u4e00\u500b\u8b80\u53d6\u97f3\u6e90\u4fe1\u606f\u7684\u6b63\u5247\u8868\u9054\u5f0f<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-comment\">\/\/Header\u6578\u64da\u683c\u5f0f\u7684\u6b63\u5247\u8868\u9054\u5f0f<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">string<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">headerPattern<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">string<\/span><span class=\"cm-operator\">&gt;<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span style=\"color: #ff0000;\"><span class=\"cm-string\">@\"#(WAV[0-9A-Z]{2}) (.*)\"<\/span> <span class=\"cm-comment\">\/\/\u5c0d\u61c9WAV00-ZZ<\/span><\/span><\/span><br \/><span role=\"presentation\">};<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u65b0\u589e\u4e00\u500bBGM\u7684\u6578\u64da\u985e\u578b\u4ee5\u53ca\u5c0d\u61c9\u7684\u8655\u7406\u5206\u652f\uff0c\u5728\u5206\u652f\u4e2d\uff0c\u5f97\u5230\u97f3\u6e90\u64ad\u653e\u7684\u504f\u79fb\u91cf<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\uff08\u300c\u97f3\u6e90\u958b\u59cb\u64ad\u653e\u7684\u62cd\u5b50\u8207\u7b2c0\u62cd\u7684\u5dee\u300d\u9019\u500b\u4fe1\u606f\u8f49\u63db\u6210\u5c0d\u61c9\u7684\u79d2\u6578 = \u97f3\u6e90\u958b\u59cb\u64ad\u653e\u7684\u5177\u9ad4\u6642\u9593\u504f\u79fb\u91cf\uff09<\/span><\/p><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u6578\u64da\uff08Note\uff09\u985e\u578b<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">enum<\/span> <span class=\"cm-variable\">DataType<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">UNSUPPORTED<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">SINGLE_NOTE<\/span>, <span class=\"cm-comment\">\/\/1L, L = Lane<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">LONG_NOTE<\/span>, <span class=\"cm-comment\">\/\/5L, L = Lane<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">DIRECT_TEMPO_CHANGE<\/span>, <span class=\"cm-comment\">\/\/\u76f4\u63a5\u6307\u5b9a\u578bBPM\u8b8a\u5316:03<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">INDEXED_TEMPO_CHANGE<\/span>, <span class=\"cm-comment\">\/\/\u7d22\u5f15\u6307\u5b9a\u578bBPM\u8b8a\u5316:08<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">MEASURE_CHANGE<\/span>, <span class=\"cm-comment\">\/\/\u62cd\u5b50\u8b8a\u5316:02<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">BGM<\/span> <span class=\"cm-comment\">\/\/\u97f3\u6e90:01<\/span><\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u901a\u904e\u901a\u9053\u7de8\u865f\u4f86\u5f97\u5230\u6578\u64da\u985e\u578b<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">DataType<\/span> <span class=\"cm-def\">GetDataType<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">channel<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">channel<\/span>[<span class=\"cm-number\">0<\/span>] <span class=\"cm-operator\">==<\/span> <span class=\"cm-string\">'1'<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">SINGLE_NOTE<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span> <span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">channel<\/span>[<span class=\"cm-number\">0<\/span>] <span class=\"cm-operator\">==<\/span> <span class=\"cm-string\">'5'<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">LONG_NOTE<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span> <span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">channel<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-string\">\"02\"<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">MEASURE_CHANGE<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span> <span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">channel<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-string\">\"03\"<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">DIRECT_TEMPO_CHANGE<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span> <span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">channel<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-string\">\"08\"<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">INDEXED_TEMPO_CHANGE<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span> <span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">channel<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-string\">\"01\"<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">BGM<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span> { <span class=\"cm-keyword\">throw<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Exception<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"DataType Not Found With Channel: {channel}\"<\/span>); }<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">LoadMainDataLine<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">line<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Note\u985e\u578b\/BPM\u8b8a\u5316\u985e\u578b\/\u97f3\u6e90\u64ad\u653e\u985e\u578b<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span> <span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">SINGLE_NOTE<\/span> <span class=\"cm-operator\">||<\/span> <span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">LONG_NOTE<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">DIRECT_TEMPO_CHANGE<\/span> <span class=\"cm-operator\">||<\/span> <span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">INDEXED_TEMPO_CHANGE<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">BGM<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6578\u64da\u70baBGM\u985e\u578b<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span> <span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">BGM<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #ff0000;\">\u00a0<span class=\"cm-comment\">\/\/\u300c\u97f3\u6e90\u958b\u59cb\u64ad\u653e\u7684\u62cd\u5b50\u8207\u7b2c0\u62cd\u7684\u5dee\u300d\u9019\u500b\u4fe1\u606f\u8f49\u63db\u6210\u5c0d\u61c9\u7684\u79d2\u6578 = \u97f3\u6e90\u958b\u59cb\u64ad\u653e\u7684\u5177\u9ad4\u6642\u9593\u504f\u79fb\u91cf \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">audioOffset<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">BeatMap<\/span>.<span class=\"cm-variable\">BeatToSecWithVarTempo<\/span>(<span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">tempoChanges<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Beatmap<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u73fe\u5728\u7684\u97f3\u6e90\u6587\u4ef6\u540d\u4fdd\u5b58\u4e86\u5728headerData[&#8220;WAV01&#8221;]\u4e2d\uff0c\u6211\u5011\u53ef\u4ee5\u901a\u904e\u8a72\u97f3\u6e90\u6587\u4ef6\u540d\uff0c\u52a0\u4e0a\u4e4b\u524d\u4fdd\u7559\u4e0b\u4f86\u7684bms\u6587\u4ef6\u593e\u7d55\u5c0d\u8def\u5f91\uff0c\u5f97\u51fa\u97f3\u6e90\u7684\u7d55\u5c0d\u8def\u5f91\u3002<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">audioFilePath<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-string\">\"\"<\/span>; <span class=\"cm-comment\">\/\/\u6a02\u66f2\u6587\u4ef6\u7d55\u5c0d\u8def\u5f91<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">audioOffset<\/span>; <span class=\"cm-comment\">\/\/\u97f3\u6e90\u64ad\u653e\u504f\u79fb<\/span><\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/ \u5be6\u4f8b\u5316BeatMap\u6642\u8b93BmsLoader\u8b80\u53d6\u4e26\u89e3\u6790bms\u6587\u4ef6<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">BeatMap<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">filePath<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/<span style=\"color: #ff0000;\">\/bms\u6587\u4ef6\u593e\u7684\u7d55\u5c0d\u8def\u5f91<\/span><\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">bmsDirectory<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">FileInfo<\/span>(<span class=\"cm-variable\">filePath<\/span>).<span class=\"cm-variable\">DirectoryName<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u5f9ebms\u6587\u4ef6\u4e2d\u7684HeaderData\u4e2d\u5f97\u5230\u97f3\u6e90\u6587\u4ef6\u540d\uff0c\u8b80\u53d6\u97f3\u6e90\u6587\u4ef6\u8def\u5f91<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">bmsLoader<\/span>.<span class=\"cm-variable\">headerData<\/span>.<span class=\"cm-variable\">ContainsKey<\/span>(<span class=\"cm-string\">\"WAV01\"<\/span>))<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0  {<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u97f3\u6e90\u6587\u4ef6\u7d55\u5c0d\u8def\u5f91 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">audioFilePath<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">bmsDirectory<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-string\">\"\\\\\"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">bmsLoader<\/span>.<span class=\"cm-variable\">headerData<\/span>[<span class=\"cm-string\">\"WAV01\"<\/span>]; \u00a0 \u00a0 <\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">PlayController<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6dfb\u52a0AudioSource\u7528\u4ee5\u64ad\u653e\u97f3\u6e90\uff0c\u4e26<span style=\"color: #ff0000;\">\u6839\u64da&#8221;file:\/\/\/&#8221; + \u97f3\u6e90\u6587\u4ef6\u8def\u5f91\uff0c\u4e26\u901a\u904eUnityWebRequestMultimedia.GetAudioClip\u5f97\u5230\u672c\u5730\u7684\u97f3\u6e90\u6587\u4ef6<\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u6ce8\u610f\uff01\u53ea\u53ef\u4ee5\u52a0\u8f09.wav\/.ogg\u683c\u5f0f\u7684\u6587\u4ef6\uff0c\u4e14\u6587\u4ef6\u540d\u4e0d\u80fd\u6709\u7279\u6b8a\u5b57\u7b26<\/span><\/p><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">IEnumerator<\/span> <span class=\"cm-def\">LoadAudioFile<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">filePath<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-operator\">!<\/span><span class=\"cm-variable\">File<\/span>.<span class=\"cm-variable\">Exists<\/span>(<span class=\"cm-variable\">filePath<\/span>)) { <span class=\"cm-keyword\">yield<\/span> <span class=\"cm-keyword\">break<\/span>; } \u00a0<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">var<\/span> <span class=\"cm-def\">audioType<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">GetAudioType<\/span>(<span class=\"cm-variable\">filePath<\/span>); \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u8b80\u53d6\u97f3\u983b\u6587\u4ef6\uff08\u6ce8\u610f\uff01\u53ea\u80fd\u8b80\u53d6wav\/ogg\uff0c\u4e14\u6587\u4ef6\u540d\u4e0d\u80fd\u6709\u4efb\u4f55\u7279\u6b8a\u5b57\u7b26\uff0c\u5982\u7a7a\u683c\u3001\u4e0b\u5212\u7dda\u7b49\u7b49\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">using<\/span> (<span class=\"cm-keyword\">var<\/span> <span class=\"cm-def\">request<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">UnityWebRequestMultimedia<\/span>.<span class=\"cm-variable\">GetAudioClip<\/span>(<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">\"file:\/\/\/\"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">filePath<\/span>, <span class=\"cm-variable\">audioType<\/span>))<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0  { \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">yield<\/span> <span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">request<\/span>.<span class=\"cm-variable\">SendWebRequest<\/span>();<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\">\u200b<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-operator\">!<\/span><span class=\"cm-variable\">request<\/span>.<span class=\"cm-variable\">isNetworkError<\/span>)<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5f97\u5230\u97f3\u983b\u6587\u4ef6<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">var<\/span> <span class=\"cm-def\">audioClip<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">DownloadHandlerAudioClip<\/span>.<span class=\"cm-variable\">GetContent<\/span>(<span class=\"cm-variable\">request<\/span>);<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">audioSource<\/span>.<span class=\"cm-variable\">clip<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">audioClip<\/span>;<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 <span style=\"color: #ff0000;\"> } \u00a0<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u53ea\u80fd\u8655\u7406Ogg\u6216Wav<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">AudioType<\/span> <span class=\"cm-def\">GetAudioType<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">filePath<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">ext<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Path<\/span>.<span class=\"cm-variable\">GetExtension<\/span>(<span class=\"cm-variable\">filePath<\/span>).<span class=\"cm-variable\">ToLower<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Debug<\/span>.<span class=\"cm-variable\">Log<\/span>(<span class=\"cm-variable\">ext<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">switch<\/span> (<span class=\"cm-variable\">ext<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">case<\/span> <span class=\"cm-string\">\".ogg\"<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">AudioType<\/span>.<span class=\"cm-variable\">OGGVORBIS<\/span>; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">case<\/span> <span class=\"cm-string\">\".wav\"<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">AudioType<\/span>.<span class=\"cm-variable\">WAV<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">default<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">AudioType<\/span>.<span class=\"cm-variable\">UNKNOWN<\/span>; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u6dfb\u52a0\u4e00\u500bstartSecond\u8a18\u9304\u904a\u6232\u958b\u59cb\u6642\u7684\u6642\u9593\uff0c\u4ee5\u53ca\u4e00\u500b\u6a19\u5fd7\u4f4d\u8868\u793a\u904a\u6232\u662f\u5426\u66ab\u505c\u3002\u901a\u904e\u9019\u5169\u500b\u5b57\u6bb5\u5be6\u73fe\u904a\u6232\u7684\u66ab\u505c\u8207\u91cd\u555f\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u904a\u6232\u66ab\u505c\uff08AudioSettings.dspTime\u4e5f\u6703\u505c\u6b62\u8a08\u7b97\uff09\u6642\uff0c\u6703\u628a\u958b\u59cb\u79d2\u6578\u7b49\u540c\u65bc\u7576\u524dTime.time\uff1b\u518d\u958b\u6642\uff0c\u6703\u4f7f\u97f3\u983b\u5728AudioSettings.dspTime\u7684\u57fa\u790e\u4e0a\uff0c\u52a0\u4e0a\u8b5c\u9762\u7684\u504f\u79fb\u548c\u97f3\u6e90\u7684\u504f\u79fb\u5f8c\u7e7c\u7e8c\uff0c\u4f7f\u97f3\u6a02\u5728\u6b63\u78ba\u7684\u4f4d\u7f6e\u518d\u958b\u3002<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u540c\u6a23\u5730\uff0c\u7531\u65bc\u7576\u524d\u904a\u6232\u7d93\u904e\u6642\u9593 = Time.time &#8211; \u8b5c\u9762\u504f\u79fb &#8211; \u958b\u59cb\u6642\u9593\uff0c\u66ab\u505c\u6642\uff0c\u958b\u59cb\u6642\u9593 = Time.time\uff0c\u56e0\u6b64\uff0c\u7576\u524d\u904a\u6232\u7d93\u904e\u6703\u88ab\u8a2d\u7f6e\u70ba\u300c\u8b5c\u9762\u504f\u79fb\u300d\uff0c\u9593\u63a5\u4f7f\u904a\u6232\u6642\u9593\u505c\u6b62\uff0c\u540c\u6642\u78ba\u4fdd\u57fa\u65bc\u7576\u524d\u62cd\u5b50\u6578\uff08\u7531\u7576\u524d\u7d93\u904e\u79d2\u6578\u8f49\u63db\uff09notes\u7684\u4f4d\u7f6e\u6b63\u78ba<\/span><\/p><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">startSecond<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0f<\/span>; <span class=\"cm-comment\">\/\/\u8b5c\u9762\u64ad\u653e\u958b\u59cb\u5f8c\u79d2\u6578\uff08\u7528\u65bc\u66ab\u505c\u64ad\u653e\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-variable-3\">bool<\/span> <span class=\"cm-variable\">isPlaying<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">false<\/span>; <span class=\"cm-comment\">\/\/\u8b5c\u9762\u66ab\u505c\u6a19\u5fd7\u7b26<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Update<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u958b\u59cb\u64ad\u653e\u8b5c\u9762\u548c\u66f2\u76ee<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-operator\">!<\/span><span class=\"cm-variable\">isPlaying<\/span> <span class=\"cm-operator\">&amp;&amp;<\/span> <span class=\"cm-variable\">Input<\/span>.<span class=\"cm-variable\">GetKeyDown<\/span>(<span class=\"cm-variable\">KeyCode<\/span>.<span class=\"cm-variable\">Space<\/span>))<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">isPlaying<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">true<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u7b49\u5f85\u6307\u5b9a\u79d2\u6578\uff08\u8b5c\u9762\u958b\u59cb\u6642\u9593 + \u97f3\u6e90\u64ad\u653e\u7684\u504f\u79fb\uff09\u5f8c\u64ad\u653e\u97f3\u6e90<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u66ab\u505c\u6642\u4e5f\u8981\u5229\u7528AudioSettings\u4f86\u66ab\u505c\uff0c\u5b83\u4ee3\u8868\u4e86\u97f3\u6a02\u7cfb\u7d71\u7684\u6642\u9593 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">audioSource<\/span>.<span class=\"cm-variable\">PlayScheduled<\/span>(<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">AudioSettings<\/span>.<span class=\"cm-variable\">dspTime<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">startOffset<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">beatMap<\/span>.<span class=\"cm-variable\">audioOffset<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  );<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u66ab\u505c\u4e2d\uff0c\u8b5c\u9762\u958b\u59cb\u64ad\u653e\u79d2\u6578\u8207Time.time\u4fdd\u6301\u4e00\u81f4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u4e5f\u5c31\u662f\u8aaa\u7b49\u540c\u65bc\u8b5c\u9762\u6c92\u6709\u958b\u59cb<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-operator\">!<\/span><span class=\"cm-variable\">isPlaying<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  { \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">startSecond<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Time<\/span>.<span class=\"cm-variable\">time<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<br \/><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u7576\u524d\u5df2\u7d93\u904e\u79d2\u6578\u7b49\u65bc = \u7576\u524d\u79d2\u6578 - \u8b5c\u9762\u4e0b\u843d\u7684\u504f\u79fb - \u8b5c\u9762\u958b\u59cb\u6642\u9593<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">currentSec<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Time<\/span>.<span class=\"cm-variable\">time<\/span> <span class=\"cm-operator\">-<\/span> <span class=\"cm-variable\">startOffset<\/span> <span class=\"cm-operator\">-<\/span> <span class=\"cm-variable\">startSecond<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u628a\u7576\u524d\u79d2\u6578\u8f49\u63db\u6210\u62cd\u5b50<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">currentBeat<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">BeatMap<\/span>.<span class=\"cm-variable\">SecToBeatWithVarTempo<\/span>(<span class=\"cm-variable\">currentSec<\/span>, <span class=\"cm-variable\">beatMap<\/span>.<span class=\"cm-variable\">tempoChangeDatas<\/span>);<br \/><\/span>}<\/pre><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u66f8\u540d\uff1a\u300aUnity\u3067\u4f5c\u308b\u30ea\u30ba\u30e0\u30b2\u30fc\u30e0\u300b \u4f5c\u8005\uff1a\u9577\u5d0e\u5927\u5b66\u30de\u30eb\u30c1\u30e1\u30c7\u30a3\u30a2\u7814\u7a76\u4f1a<\/p>\n","protected":false},"author":1,"featured_media":947,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,18,23],"tags":[],"class_list":["post-1879","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-reading-notes","category-developing","category-unity-rhythm-game"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/03\/FeatureCover_ReadingNotes.png","_links":{"self":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/1879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/comments?post=1879"}],"version-history":[{"count":15,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/1879\/revisions"}],"predecessor-version":[{"id":1896,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/1879\/revisions\/1896"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/media\/947"}],"wp:attachment":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/media?parent=1879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/categories?post=1879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/tags?post=1879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}