{"id":1842,"date":"2021-07-22T17:07:52","date_gmt":"2021-07-22T09:07:52","guid":{"rendered":"http:\/\/lonelinerd.com\/?p=1842"},"modified":"2022-10-16T21:54:26","modified_gmt":"2022-10-16T13:54:26","slug":"unity-rhythm-game-part-6","status":"publish","type":"post","link":"https:\/\/lonelinerd.com\/index.php\/2021\/07\/22\/unity-rhythm-game-part-6\/","title":{"rendered":"\u300aUnity\u3067\u4f5c\u308b\u30ea\u30ba\u30e0\u30b2\u30fc\u30e0\u300b\u5b78\u7fd2\u7b46\u8a18\uff08\u516d\uff09\uff1a\u300cBMS\u6587\u4ef6\u8b80\u53d6\u8207\u89e3\u6790\u300d"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1842\" class=\"elementor elementor-1842\">\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-c0ef8a4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c0ef8a4\" 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-6d92539\" data-id=\"6d92539\" 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-919477e elementor-widget elementor-widget-text-editor\" data-id=\"919477e\" 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-17a7f71 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"17a7f71\" 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-5f275db\" data-id=\"5f275db\" 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-8adad30 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"8adad30\" 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-be89eac elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"be89eac\" 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-0cdd727\" data-id=\"0cdd727\" 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-3c3549e elementor-widget elementor-widget-text-editor\" data-id=\"3c3549e\" 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\">\u8b5c\u9762\uff08\u6c92\u6709\u62cd\u5b50\u8207\u901f\u5ea6\u8b8a\u5316\uff09\u7684\u8b80\u53d6<\/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\">\u8b5c\u9762\uff08\u6c92\u6709\u62cd\u5b50\u8207\u901f\u5ea6\u8b8a\u5316\uff09\u7684\u8173\u672c\u8b80\u53d6\uff0c\u4e3b\u8981\u6b65\u9a5f\u70ba\u5169\u5927\u6b65\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;\">\u8b80\u53d6\u6587\u4ef6\u982d\u6578\u64da\uff08Header Data\uff09<\/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;\">\u5efa\u7acb\u6587\u4ef6\u982d\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-string\">@\"#(PLAYER) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-string\">@\"#(GENRE) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-string\">@\"#(TITLE) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-string\">@\"#(ARTIST) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-string\">@\"#(BPM) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-string\">@\"#(BPM[0-9A-Z]{2}) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-string\">@\"#(PLAYLEVEL) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-string\">@\"#(RANK) (.*)\"<\/span><\/span><br \/><span role=\"presentation\">};<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p\"><span class=\"md-plain md-expand\" style=\"color: #ff0000;\">\u5efa\u7acbHeader\u6578\u64da\u6620\u5c04<\/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\u7684\u540d\u5b57\u8207\u6578\u64da\u6620\u5c04<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">string<\/span>, <span class=\"cm-variable-3\">string<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">headerData<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">string<\/span>, <span class=\"cm-variable-3\">string<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u904d\u6b77bms\u6587\u4ef6\u4e2d\u7684\u6240\u6709\u884c\u548cHeader\u6b63\u5247\uff0c\u628a\u7b26\u5408\u6b63\u5247\u7684\u6578\u64da\u653e\u5230\u6578\u64da\u6620\u5c04\u5b57\u5178\u4e2d<\/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\">\/\/\/<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\/ \u89e3\u6790HEADER\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\/<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">LoadHeaderLine<\/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-keyword\">foreach<\/span> (<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">pattern<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">headerPattern<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Match<\/span> <span class=\"cm-variable\">match<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Regex<\/span>.<span class=\"cm-variable\">Match<\/span>(<span class=\"cm-variable\">line<\/span>, <span class=\"cm-variable\">pattern<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Success<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Groups[0].Value\u70ba\u6574\u500b\u8868\u9054\u5f0f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Groups[1].Value = Header\u540d<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">headerName<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">1<\/span>].<span class=\"cm-variable\">Value<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Groups[2].Value = \u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">data<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">2<\/span>].<span class=\"cm-variable\">Value<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">headerData<\/span>[<span class=\"cm-variable\">headerName<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">data<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/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\" style=\"color: #ff0000;\">\u8b80\u53d6\u6587\u4ef6\u4e3b\u8981\u6578\u64da\uff08Main Data\uff09<\/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;\">\u5efa\u7acb\u8b80\u53d6MainData\u6578\u64da\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 style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/MainData\u6578\u64da\u683c\u5f0f\u7684\u6b63\u5247\u8868\u9054\u5f0f<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u5c0f\u7bc0\u7de8\u865f - 000~999<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u901a\u9053\u7de8\u865f - 00~ZZ<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u5206\u9694\u7b26 - :<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u6578\u64da\u672c\u9ad4 - \u9577\u5ea6\u70ba2\u7684\u500d\u6578\u7684\u4efb\u610f\u5b57\u7b26<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">mainDataPattern<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-string\">@\"#([0-9]{3})([0-9A-Z]{2}):(.*)\"<\/span>;<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u5efa\u7acb\u901a\u9053\u7de8\u865f\u500b\u4f4d\u6578\u8207\u5be6\u969b\u8ecc\u9053\u7de8\u865f\u6620\u5c04<\/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\">\/\/\u901a\u9053\u7de8\u865f\u7684\u500b\u4f4d\u6578\uff08\u8ecc\u9053\u7de8\u865f\uff09\u8207\u5be6\u969b\u7684\u8ecc\u9053\u7de8\u865f\u6620\u5c04<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">char<\/span>, <span class=\"cm-variable-3\">int<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">lanePairs<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">char<\/span>, <span class=\"cm-variable-3\">int<\/span><span class=\"cm-operator\">&gt;<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0  {<span class=\"cm-string\">'1'<\/span>, <span class=\"cm-number\">0<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0  {<span class=\"cm-string\">'2'<\/span>, <span class=\"cm-number\">1<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0  {<span class=\"cm-string\">'3'<\/span>, <span class=\"cm-number\">2<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0  {<span class=\"cm-string\">'4'<\/span>, <span class=\"cm-number\">3<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0  {<span class=\"cm-string\">'5'<\/span>, <span class=\"cm-number\">4<\/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;\">\u5efa\u7acb\u4fdd\u5b58\u8b5c\u9762\u6240\u6709note\u4fe1\u606f\u548cLongNote\u982d\u62bc\u62cd\u5b50\u4f4d\u7f6e\u7684\u7de9\u5b58\u96c6\u5408<\/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\">\/\/\u6240\u6709notes\u4fe1\u606f<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">NoteProperty<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">noteProperties<\/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\">NoteProperty<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/<span style=\"color: #ff0000;\">\u6bcf\u500b\u8ecc\u9053\u6253\u958b\uff08\u958b\u59cb\uff09Long Note\u7684\u6700\u5f8c\u4e00\u500b\u7bc0\u62cd\uff08Long Note\u982d\u62bc\u7684\u4e00\u62cd\uff09<\/span><\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u95dc\u9589\uff08\u7d50\u675f\uff09Long Note\u6642\u5c07\u5176\u91cd\u8a2d\u70ba-1\uff08Long Note\u5c3e\u62bc\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u7528\u65bc\u5224\u65b7\u8a72\u8ecc\u9053\u662f\u5426\u958b\u59cb\u4e86\u9577\u62bc<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-variable-3\">float<\/span>[] <span class=\"cm-variable\">longNoteBeginBuffers<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">float<\/span>[] { <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>, <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>, <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>, <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>, <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span> };<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u5efa\u7acb\u6bcf\u5c0f\u7bc0\u9577\u5ea6\uff084\u62cd\uff09\u7684\u5c0f\u7bc0\u6578\u7d44\uff0c\u9577\u5ea6\u70ba\u53ef\u80fd\u5c0f\u7bc0\u7de8\u865f000~999 = 1000<\/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 style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u6bcf\u5c0f\u7bc0\u9577\u5ea6\uff0c\u6bcf\u5c0f\u7bc04\u62cd<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/\u5c0f\u7bc0\u7de8\u865f\u53d6\u503c\u70ba000~999\uff0c\u51711000\u5c0f\u7bc0<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-variable-3\">float<\/span>[] <span class=\"cm-variable\">measureLengths<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Enumerable<\/span>.<span class=\"cm-variable\">Repeat<\/span>(<span class=\"cm-number\">4f<\/span>, <span class=\"cm-number\">1000<\/span>).<span class=\"cm-variable\">ToArray<\/span>();<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5efa\u7acb\u4ee3\u8868\u6709\u751a\u9ebc<span style=\"color: #ff0000;\">Note\u985e\u578b\u7684\u679a\u8209<\/span><\/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\">\/\/\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\">SingleNote<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">LongNote<\/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\">\u5efa\u7acb<span style=\"color: #ff0000;\">\u901a\u904e\u901a\u9053\u7de8\u865f\u4f86\u5f97\u5230Note\u985e\u578b<\/span>\u7684\u65b9\u6cd5<\/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\">\/\/\u901a\u904e\u901a\u9053\u7de8\u865f\u4f86\u5f97\u5230\u6578\u64da\u985e\u578b<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-comment\">\/\/1: SingleNote ; 5: LongNote<\/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\">switch<\/span> (<span class=\"cm-variable\">channel<\/span>[<span class=\"cm-number\">0<\/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\">'1'<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">SingleNote<\/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\">'5'<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">LongNote<\/span>; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/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\">throw<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Exception<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"Can't get note type which is not specified.\"<\/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;\">\u904d\u6b77\u6587\u4ef6\u6bcf\u4e00\u884c\uff0c\u4e26\u5c0d\u7b26\u5408\u4e3b\u6578\u64da\u6b63\u5247\u7684\u6578\u64da\u9032\u884c\u89e3\u6790\u548c\u8b80\u53d6<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5982\u679c\u8b80\u53d6\u6210\u529f\uff0c\u5148\u628a\u7121\u6cd5\u8b58\u5225\u7684\u6578\u64da\u6392\u9664<\/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\">\/\/\/<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\/ \u89e3\u6790MAIN DATA\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\/<\/span><\/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\">{ \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Match<\/span> <span class=\"cm-variable\">match<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Regex<\/span>.<span class=\"cm-variable\">Match<\/span>(<span class=\"cm-variable\">line<\/span>, <span class=\"cm-variable\">mainDataPattern<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u6578\u64da\u683c\u5f0f<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/nnn: \u5c0f\u7bc0\u7de8\u865f =&gt; match.Groups[1].Value<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/xx: \u901a\u9053\u7de8\u865f =&gt; match.Groups[2].Value<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/match.Groups[3].Value =&gt; \u6578\u64da\u672c\u9ad4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Success<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5c0f\u7bc0\u7de8\u865f<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">measureNum<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Convert<\/span>.<span class=\"cm-variable\">ToInt32<\/span>(<span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">1<\/span>].<span class=\"cm-variable\">Value<\/span>);<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u901a\u9053\u7de8\u865f<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">channel<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">2<\/span>].<span class=\"cm-variable\">Value<\/span>;<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Data\u672c\u9ad4<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">body<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">3<\/span>].<span class=\"cm-variable\">Value<\/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-comment\">\/\/\u901a\u904e\u901a\u9053\u7de8\u865f\u5f97\u5230\u6578\u64da\u7684\u985e\u578b\uff08Single\/Long\/etc\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">DataType<\/span> <span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">GetDataType<\/span>(<span class=\"cm-variable\">channel<\/span>);<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<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\">Unsupported<\/span>) { <span class=\"cm-keyword\">return<\/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><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7136\u5f8c\u518d<span style=\"color: #ff0000;\">\u5f9e\u5c0f\u7bc0\u958b\u59cb\u9032\u884c\u8a08\u7b97<\/span>\uff0c\u5982<span style=\"color: #ff0000;\">\u8a72note\u6240\u5728\u5c0f\u7bc0\u7684\u958b\u59cb\u62cd\u5b50\u3001\u8a72\u5c0f\u7bc0\u88ab\u5206\u6210\u591a\u5c11\u7b49\u5206\uff0c\u7136\u5f8c\u904d\u6b77\u6240\u6709\u300c\u7269\u9ad4\u300d\uff082\u500b\u5b57\u5143 = 1\u500b\u7269\u9ad4\uff09\uff0c\u8a08\u7b97\u9019\u4e9b\u7269\u9ad4\u81ea\u8eab\u7684\u958b\u59cb\u62cd\u5b50\uff08\u5c0f\u7bc0\u7684\u958b\u59cb\u62cd\u5b50 + \u81ea\u8eab\u5728\u7576\u524d\u5c0f\u7bc0\u7684\u4f4d\u7f6e * \uff08\u5c0f\u7bc0\u9577\u5ea6\/\u7269\u9ad4\u6578\u91cf\uff09\uff09<\/span><\/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\">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-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\">SingleNote<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \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\">LongNote<\/span>)<\/span><br \/><span role=\"presentation\">    {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u8a72\u5c0f\u7bc0\u958b\u59cb\u7684\u62cd\u5b50 = \u5c0f\u7bc0\u7de8\u865f * 4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #ff0000;\"><span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">measureStartBeat<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">measureLengths<\/span>.<span class=\"cm-variable\">Take<\/span>(<span class=\"cm-variable\">measureNum<\/span>).<span class=\"cm-variable\">Sum<\/span>();<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u8a72\u5c0f\u7bc0\u88ab\u5206\u70ba\u591a\u5c11\u7b49\u5206\uff08\u6709\u591a\u5c11\u500b\u7269\u9ad4\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">objCount<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">body<\/span>.<span class=\"cm-variable\">Length<\/span> <span class=\"cm-operator\">\/<\/span> <span class=\"cm-number\">2<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u904d\u6b77\u6240\u6709\u7269\u9ad4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">for<\/span> (<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-variable\">objCount<\/span>; <span class=\"cm-variable\">i<\/span><span class=\"cm-operator\">++<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u6bcf\u5169\u500b\u6578\u5b57\u70ba1\u500b\u7269\u9ad4<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/02, 02, 00, 02...<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">objNum<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">body<\/span>.<span class=\"cm-variable\">Substring<\/span>(<span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-number\">2<\/span>, <span class=\"cm-number\">2<\/span>);<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/00 =&gt; \u4f11\u6b62\u7b26<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">objNum<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-string\">\"00\"<\/span>) { <span class=\"cm-keyword\">continue<\/span>; }<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\">\u200b<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8a72\u7269\u9ad4\u5728\u6574\u9996\u66f2\u5b50\u4e2d\u7684\u6240\u5728\u62cd\u5b50 = \u6240\u5728\u5c0f\u7bc0\u958b\u59cb\u7684\u62cd\u5b50 + <\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\uff08\u81ea\u8eab\u7d22\u5f15\uff08i\uff09 * \u7576\u524d\u5c0f\u7bc0\u9577\u5ea6\uff08measureLengths[measureNum]\uff09 \/ \u7269\u9ad4\u6578\u91cf\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">beat<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">measureStartBeat<\/span> <span class=\"cm-operator\">+<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  (<span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-variable\">measureLengths<\/span>[<span class=\"cm-variable\">measureNum<\/span>] <span class=\"cm-operator\">\/<\/span> <span class=\"cm-variable\">objCount<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 \u00a0 \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\">\u6700\u5f8c\u518d\u5206\u5225\u5c0d\u5169\u7a2e\u985e\u578b\u7684<span style=\"color: #ff0000;\">note\u9032\u884c\u521d\u59cb\u5316<\/span>\u3002<span style=\"color: #ff0000;\">Long Note\u7684\u521d\u59cb\u5316<\/span>\u7a0d\u5fae\u6703\u6bd4\u8f03\u7279\u5225\uff0c\u7576\u5176<span style=\"color: #ff0000;\">\u6240\u5c6c\u8ecc\u9053\u4e0a\u7684\u9577\u62bc\u7de9\u5b58\u70ba-1\u6642\uff0c\u4ee3\u8868\u8a72\u7269\u9ad4\u662f\u9577\u62bc\u7684\u958b\u59cb\uff0c\u4e26\u628a\u62cd\u5b50\u52a0\u5230\u7de9\u5b58\uff1b\u7576\u4e0b\u4e00\u500b\u8a72\u8ecc\u9053\u4e0a\u7684\u7269\u9ad4\u51fa\u73fe\u6642\uff0c\u9019\u500b\u7269\u9ad4\u5c31\u662f\u9577\u62bc\u7684\u7d50\u675f\uff0c\u5230\u9019\u88e1\u624d\u80fd\u78ba\u5b9a\u9577\u62bc\u7684beatStart\uff08\u4e4b\u524d\u7de9\u5b58\u4e0b\u4f86\u7684\u62cd\u5b50\uff09\u548cbeatEnd\uff08\u7576\u524d\u62cd\u5b50\uff09\uff0c\u4e26\u5c07\u5176\u5be6\u4f8b\u5316\u51fa\u4f86\u3002<\/span><\/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\">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-keyword\">if<\/span>(<span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">SingleNote<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 <span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">LongNote<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u901a\u9053\u7de8\u865f\u7684\u500b\u4f4d\u6578 = \u5177\u9ad4\u8ecc\u9053<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">lane<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">lanePairs<\/span>[<span class=\"cm-variable\">channel<\/span>[<span class=\"cm-number\">1<\/span>]];<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">switch<\/span> (<span class=\"cm-variable\">dataType<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">case<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">Unsupported<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>;<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">case<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">SingleNote<\/span>:<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">noteProperties<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">NoteProperty<\/span>(<span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">lane<\/span>, <span class=\"cm-variable\">NoteType<\/span>.<span class=\"cm-variable-3\">Single<\/span>));<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #ff0000;\">\u00a0<span class=\"cm-keyword\">case<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">LongNote<\/span>:<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7576\u524d\u8ecc\u9053\u4e0a\u7684\u9577\u62bc\u7de9\u5b58\u70baOFF\uff08\u6c92\u6709LongNote\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">longNoteBeginBuffers<\/span>[<span class=\"cm-variable\">lane<\/span>] <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-number\">0<\/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 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u4ee3\u8868\u7576\u524d\u9577\u62bcbeat\u70baLong Note\u7684\u958b\u59cb\uff0c\u4fdd\u5b58\u8a72beat\u5230\u7de9\u5b58\u4e2d<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">longNoteBeginBuffers<\/span>[<span class=\"cm-variable\">lane<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">beat<\/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 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7576\u524d\u8ecc\u9053\u4e0a\u7684\u9577\u62bc\u7de9\u5b58\u70baON\uff08\u5df2\u6709LongNote\u7684\u8d77\u9ede\u52a0\u5165\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">else<\/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 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u4ee3\u8868\u73fe\u5728\u8981\u52a0\u5165\u7684\u662fLong Note\u7684\u7d42\u9ede<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8a72\u8ecc\u9053\u4e0a\u7684\u9577\u62bc\u7de9\u5b58beat\u4f5c\u70ba\u8d77\u9ede\uff0c\u7576\u524dbeat\u70ba\u7d42\u9ede<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">noteProperties<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">NoteProperty<\/span>(<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">longNoteBeginBuffers<\/span>[<span class=\"cm-variable\">lane<\/span>], <span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">lane<\/span>, <span class=\"cm-variable\">NoteType<\/span>.<span class=\"cm-variable\">Long<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  ));<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Long Note\u7684\u9577\u62bc\u7d50\u675f\uff0c\u91cd\u7f6e\u7de9\u5b58\u503c\u70baOFF\uff08-1\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">longNoteBeginBuffers<\/span>[<span class=\"cm-variable\">lane<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>;<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">default<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">BmsLoader\u7e3d\u9ad4\u4ee3\u78bc\u5982\u4e0b<\/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\">using<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">RegularExpressions<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">using<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Collections<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">using<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Collections<\/span>.<span class=\"cm-variable\">Generic<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">using<\/span> <span class=\"cm-variable\">UnityEngine<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">using<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Linq<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">using<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">IO<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">using<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">using<\/span> <span class=\"cm-variable\">System<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><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\">SingleNote<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">LongNote<\/span><\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">BmsLoader<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/MainData\u6578\u64da\u683c\u5f0f\u7684\u6b63\u5247\u8868\u9054\u5f0f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5c0f\u7bc0\u7de8\u865f - 000~999<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u901a\u9053\u7de8\u865f - 00~ZZ<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5206\u9694\u7b26 - :<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6578\u64da\u672c\u9ad4 - \u9577\u5ea6\u70ba2\u7684\u500d\u6578\u7684\u4efb\u610f\u5b57\u7b26<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">mainDataPattern<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-string\">@\"#([0-9]{3})([0-9A-Z]{2}):(.*)\"<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Header\u6578\u64da\u683c\u5f0f\u7684\u6b63\u5247\u8868\u9054\u5f0f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<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\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">@\"#(PLAYER) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">@\"#(GENRE) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">@\"#(TITLE) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">@\"#(ARTIST) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">@\"#(BPM) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">@\"#(BPM[0-9A-Z]{2}) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">@\"#(PLAYLEVEL) (.*)\"<\/span>,<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-string\">@\"#(RANK) (.*)\"<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  };<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u901a\u9053\u7de8\u865f\u7684\u500b\u4f4d\u6578\uff08\u8ecc\u9053\u7de8\u865f\uff09\u8207\u5be6\u969b\u7684\u8ecc\u9053\u7de8\u865f\u6620\u5c04<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">char<\/span>, <span class=\"cm-variable-3\">int<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">lanePairs<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">char<\/span>, <span class=\"cm-variable-3\">int<\/span><span class=\"cm-operator\">&gt;<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<span class=\"cm-string\">'1'<\/span>, <span class=\"cm-number\">0<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<span class=\"cm-string\">'2'<\/span>, <span class=\"cm-number\">1<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<span class=\"cm-string\">'3'<\/span>, <span class=\"cm-number\">2<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<span class=\"cm-string\">'4'<\/span>, <span class=\"cm-number\">3<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<span class=\"cm-string\">'5'<\/span>, <span class=\"cm-number\">4<\/span> },<\/span><br \/><span role=\"presentation\"> \u00a0  };<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Header\u6578\u64da\u7684\u540d\u5b57\u8207\u6578\u64da\u6620\u5c04<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">string<\/span>, <span class=\"cm-variable-3\">string<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">headerData<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable-3\">string<\/span>, <span class=\"cm-variable-3\">string<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6240\u6709notes\u4fe1\u606f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">NoteProperty<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">noteProperties<\/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\">NoteProperty<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u901f\u5ea6\u8b8a\u5316\u4fe1\u606f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">TempoChange<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">tempoChanges<\/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\">TempoChange<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6bcf\u5c0f\u7bc0\u9577\u5ea6\uff0c\u6bcf\u5c0f\u7bc04\u62cd<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5c0f\u7bc0\u7de8\u865f\u53d6\u503c\u70ba000~999\uff0c\u51711000\u5c0f\u7bc0<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">float<\/span>[] <span class=\"cm-variable\">measureLengths<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Enumerable<\/span>.<span class=\"cm-variable\">Repeat<\/span>(<span class=\"cm-number\">4f<\/span>, <span class=\"cm-number\">1000<\/span>).<span class=\"cm-variable\">ToArray<\/span>();<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6bcf\u500b\u8ecc\u9053\u6253\u958b\uff08\u958b\u59cb\uff09Long Note\u7684\u6700\u5f8c\u4e00\u500b\u7bc0\u62cd\uff08Long Note\u982d\u62bc\u7684\u4e00\u62cd\uff09<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u95dc\u9589\uff08\u7d50\u675f\uff09Long Note\u6642\u5c07\u5176\u91cd\u8a2d\u70ba-1\uff08Long Note\u5c3e\u62bc\uff09<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7528\u65bc\u5224\u65b7\u8a72\u8ecc\u9053\u662f\u5426\u958b\u59cb\u4e86\u9577\u62bc<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">float<\/span>[] <span class=\"cm-variable\">longNoteBeginBuffers<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">float<\/span>[] { <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>, <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>, <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>, <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>, <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span> };<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/ \u8b80\u53d6Bms\u6587\u4ef6\u69cb\u9020\u51fd\u6578<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/<br \/><\/span><\/span><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">BmsLoader<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">filePath<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8b80\u53d6Bms\u6587\u4ef6\uff0c\u5c07\u6bcf\u4e00\u884c\u4fdd\u5b58\u5728\u4e00\u500b\u6578\u7d44\u4e2d<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">lines<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">File<\/span>.<span class=\"cm-variable\">ReadAllLines<\/span>(<span class=\"cm-variable\">filePath<\/span>, <span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8b80\u53d6Header\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">line<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">lines<\/span>) { <span class=\"cm-variable\">LoadHeaderLine<\/span>(<span class=\"cm-variable\">line<\/span>); }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">tempoChanges<\/span>.<span class=\"cm-variable\">Add<\/span>(<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8a2d\u7f6e0\u62cd\u958b\u59cb\u7684BPM<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TempoChange<\/span>(<span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">Convert<\/span>.<span class=\"cm-variable\">ToSingle<\/span>(<span class=\"cm-variable\">headerData<\/span>[<span class=\"cm-string\">\"BPM\"<\/span>])));<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8b80\u53d6Main Data\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">line<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">lines<\/span>) { <span class=\"cm-variable\">LoadMainDataLine<\/span>(<span class=\"cm-variable\">line<\/span>); }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u628a\u4e0d\u540c\u7684\u901f\u5ea6\uff08BPM\uff09\u6bb5\u6839\u64da\u5176\u6240\u767c\u751f\u7684\u5177\u9ad4\u7bc0\u62cd\uff08beat\uff09\u5f9e\u5c0f\u5230\u5927\u6392\u5e8f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">tempoChanges<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">tempoChanges<\/span>.<span class=\"cm-variable\">OrderBy<\/span>(<span class=\"cm-variable\">x<\/span> <span class=\"cm-operator\">=&gt;<\/span> <span class=\"cm-variable\">x<\/span>.<span class=\"cm-variable\">beat<\/span>).<span class=\"cm-variable\">ToList<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/ \u89e3\u6790HEADER\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/<br \/><\/span><\/span><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">LoadHeaderLine<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">line<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">pattern<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">headerPattern<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Match<\/span> <span class=\"cm-variable\">match<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Regex<\/span>.<span class=\"cm-variable\">Match<\/span>(<span class=\"cm-variable\">line<\/span>, <span class=\"cm-variable\">pattern<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Success<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Groups[0].Value\u70ba\u6574\u500b\u8868\u9054\u5f0f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Groups[1].Value = Header\u540d<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">headerName<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">1<\/span>].<span class=\"cm-variable\">Value<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Groups[2].Value = \u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">data<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">2<\/span>].<span class=\"cm-variable\">Value<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">headerData<\/span>[<span class=\"cm-variable\">headerName<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">data<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/ \u89e3\u6790MAIN DATA\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\/<br \/><\/span><\/span><span role=\"presentation\"> \u00a0 \u00a0<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\"> \u00a0  { \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Match<\/span> <span class=\"cm-variable\">match<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Regex<\/span>.<span class=\"cm-variable\">Match<\/span>(<span class=\"cm-variable\">line<\/span>, <span class=\"cm-variable\">mainDataPattern<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6578\u64da\u683c\u5f0f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/nnn: \u5c0f\u7bc0\u7de8\u865f =&gt; match.Groups[1].Value<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/xx: \u901a\u9053\u7de8\u865f =&gt; match.Groups[2].Value<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/match.Groups[3].Value =&gt; \u6578\u64da\u672c\u9ad4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Success<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5c0f\u7bc0\u7de8\u865f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">measureNum<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Convert<\/span>.<span class=\"cm-variable\">ToInt32<\/span>(<span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">1<\/span>].<span class=\"cm-variable\">Value<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u901a\u9053\u7de8\u865f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">channel<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">2<\/span>].<span class=\"cm-variable\">Value<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Data\u672c\u9ad4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">body<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Groups<\/span>[<span class=\"cm-number\">3<\/span>].<span class=\"cm-variable\">Value<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u901a\u904e\u901a\u9053\u7de8\u865f\u5f97\u5230\u6578\u64da\u7684\u985e\u578b\uff08Single\/Long\/etc\uff09<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">DataType<\/span> <span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">GetDataType<\/span>(<span class=\"cm-variable\">channel<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<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\">Unsupported<\/span>) { <span class=\"cm-keyword\">return<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \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\">SingleNote<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \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\">LongNote<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8a72\u5c0f\u7bc0\u958b\u59cb\u7684\u62cd\u5b50 = \u5c0f\u7bc0\u7de8\u865f * 4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">measureStartBeat<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">measureLengths<\/span>.<span class=\"cm-variable\">Take<\/span>(<span class=\"cm-variable\">measureNum<\/span>).<span class=\"cm-variable\">Sum<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8a72\u5c0f\u7bc0\u88ab\u5206\u70ba\u591a\u5c11\u7b49\u5206\uff08\u6709\u591a\u5c11\u500b\u7269\u9ad4\uff09<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">objCount<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">body<\/span>.<span class=\"cm-variable\">Length<\/span> <span class=\"cm-operator\">\/<\/span> <span class=\"cm-number\">2<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u904d\u6b77\u6240\u6709\u7269\u9ad4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">for<\/span> (<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-variable\">objCount<\/span>; <span class=\"cm-variable\">i<\/span><span class=\"cm-operator\">++<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6bcf\u5169\u500b\u6578\u5b57\u70ba1\u500b\u7269\u9ad4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/02, 02, 00, 02...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">objNum<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">body<\/span>.<span class=\"cm-variable\">Substring<\/span>(<span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-number\">2<\/span>, <span class=\"cm-number\">2<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/00 =&gt; \u4f11\u6b62\u7b26<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">objNum<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-string\">\"00\"<\/span>) { <span class=\"cm-keyword\">continue<\/span>; }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8a72\u7269\u9ad4\u5728\u6574\u9996\u66f2\u5b50\u4e2d\u7684\u6240\u5728\u62cd\u5b50 = \u6240\u5728\u5c0f\u7bc0\u958b\u59cb\u7684\u62cd\u5b50 + <\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\uff08\u81ea\u8eab\u7d22\u5f15\uff08i\uff09 * \u7576\u524d\u5c0f\u7bc0\u9577\u5ea6\uff08measureLengths[measureNum]\uff09 \/ \u7269\u9ad4\u6578\u91cf\uff09<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">beat<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">measureStartBeat<\/span> <span class=\"cm-operator\">+<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  (<span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-variable\">measureLengths<\/span>[<span class=\"cm-variable\">measureNum<\/span>] <span class=\"cm-operator\">\/<\/span> <span class=\"cm-variable\">objCount<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<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\">SingleNote<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \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\">LongNote<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u901a\u9053\u7de8\u865f\u7684\u500b\u4f4d\u6578 = \u5177\u9ad4\u8ecc\u9053<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">lane<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">lanePairs<\/span>[<span class=\"cm-variable\">channel<\/span>[<span class=\"cm-number\">1<\/span>]];<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">switch<\/span> (<span class=\"cm-variable\">dataType<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">case<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">Unsupported<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">case<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">SingleNote<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">noteProperties<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">NoteProperty<\/span>(<span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">lane<\/span>, <span class=\"cm-variable\">NoteType<\/span>.<span class=\"cm-variable-3\">Single<\/span>));<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">case<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">LongNote<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7576\u524d\u8ecc\u9053\u4e0a\u7684\u9577\u62bc\u7de9\u5b58\u70baOFF\uff08\u6c92\u6709LongNote\uff09<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">longNoteBeginBuffers<\/span>[<span class=\"cm-variable\">lane<\/span>] <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-number\">0<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u4ee3\u8868\u7576\u524d\u9577\u62bcbeat\u70baLong Note\u7684\u958b\u59cb\uff0c\u4fdd\u5b58\u8a72beat\u5230\u7de9\u5b58\u4e2d<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">longNoteBeginBuffers<\/span>[<span class=\"cm-variable\">lane<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">beat<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7576\u524d\u8ecc\u9053\u4e0a\u7684\u9577\u62bc\u7de9\u5b58\u70baON\uff08\u5df2\u6709LongNote\u7684\u8d77\u9ede\u52a0\u5165\uff09<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u4ee3\u8868\u73fe\u5728\u8981\u52a0\u5165\u7684\u662fLong Note\u7684\u7d42\u9ede<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8a72\u8ecc\u9053\u4e0a\u7684\u9577\u62bc\u7de9\u5b58beat\u4f5c\u70ba\u8d77\u9ede\uff0c\u7576\u524dbeat\u70ba\u7d42\u9ede<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">noteProperties<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">NoteProperty<\/span>(<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">longNoteBeginBuffers<\/span>[<span class=\"cm-variable\">lane<\/span>], <span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">lane<\/span>, <span class=\"cm-variable\">NoteType<\/span>.<span class=\"cm-variable\">Long<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  ));<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/Long Note\u7684\u9577\u62bc\u7d50\u675f\uff0c\u91cd\u7f6e\u7de9\u5b58\u503c\u70baOFF\uff08-1\uff09<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">longNoteBeginBuffers<\/span>[<span class=\"cm-variable\">lane<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-operator\">-<\/span><span class=\"cm-number\">1<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">default<\/span>:<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  } \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u901a\u904e\u901a\u9053\u7de8\u865f\u4f86\u5f97\u5230\u6578\u64da\u985e\u578b<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/1: SingleNote ; 5: LongNote<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">DataType<\/span> <span class=\"cm-variable\">GetDataType<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">channel<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \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 \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 \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\"> \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\">\u8981\u5177\u9ad4\u4f7f\u7528\u4e0a\u8ff0\u8173\u672c\u5c0dbms\u683c\u5f0f\u6587\u4ef6\u9032\u884c\u8b80\u53d6\uff0c\u9084\u9700\u8981\u5c0dBeatmap\u8173\u672c\u4ee5\u53caPlayerController\u8173\u672c\u9032\u884c\u4fee\u6539\u3002<\/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;\">Beatmap\uff1a\u6dfb\u52a0\u4e00\u500b\u63a5\u6536\u6587\u4ef6\u8def\u5f91\u7684\u69cb\u9020\u65b9\u6cd5\uff0c\u5728Beatmap\u88ab\u5be6\u4f8b\u5316\u6642\uff0c\u6703\u540c\u6642\u5be6\u4f8b\u5316\u4e00\u500bBmsLoader\uff0c\u4e26bms\u6587\u4ef6\u8def\u5f91\u50b3\u904e\u53bb\u8b93BmsLoader\u5b8c\u6210note\u6578\u64da\u548c\u901f\u5ea6\u6bb5\u6578\u64da\u7684\u8b80\u53d6\u548c\u521d\u59cb\u5316<\/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\">\/\/\/<\/span><\/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-comment\">\/\/\/<br \/><\/span><\/span><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-variable\">BmsLoader<\/span> <span class=\"cm-variable\">bmsLoader<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">BmsLoader<\/span>(<span class=\"cm-variable\">filePath<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">noteDatas<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">bmsLoader<\/span>.<span class=\"cm-variable\">noteProperties<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">tempoChangeDatas<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">bmsLoader<\/span>.<span class=\"cm-variable\">tempoChanges<\/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\"><span style=\"color: #ff0000;\">PlayerController\uff1a\u8a2d\u7f6e\u6587\u4ef6\u8def\u5f91\uff0c\u5728Awake\u4e2d\u5be6\u4f8b\u5316beatmap\u4e26\u628a\u8b5c\u9762\u8def\u5f91\u50b3\u905e\u904e\u53bb\u3002\u5728beatmap\u901a\u904ebmsLoader\u5b8c\u6210\u8b5c\u9762\u7684\u521d\u59cb\u5316\u5f8c\uff0c PlayerController\u5c31\u53ef\u4ee5\u518d\u901a\u904ebeatmap\u4e2d\u7684noteDatas\u5f97\u5230\u5b8c\u6210\u6578\u64da\u521d\u59cb\u5316\u5f8c\u7684\u6bcf\u500bnotes\uff0c\u518d\u5c07\u4ed6\u5011\u4f9d\u6b21\u5be6\u4f8b\u5316\u5230\u904a\u6232\u5834\u666f\u4e2d<\/span>\uff0c\u8b5c\u9762\uff08\u6c92\u6709\u8b8a\u901f\uff09\u7684\u8b80\u53d6\u548c\u89e3\u6790\u5c31\u5b8c\u6210\u4e86<\/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 style=\"color: #ff0000;\" role=\"presentation\"><span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">beatmapDirectory<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Application<\/span>.<span class=\"cm-variable\">dataPath<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-string\">\"\/..\/Beatmaps\"<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">beatMap<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">BeatMap<\/span>(<span class=\"cm-variable\">beatmapDirectory<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-string\">\"\/sample1.bms\"<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/Spawning Notes<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable\">NoteProperty<\/span> <span class=\"cm-variable\">noteProperty<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">beatMap<\/span>.<span class=\"cm-variable\">noteDatas<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Instantiate<\/span>(<span class=\"cm-variable\">noteProperty<\/span>.<span class=\"cm-variable\">noteType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">NoteType<\/span>.<span class=\"cm-variable-3\">Single<\/span> <span class=\"cm-operator\">?<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">singleNotePrefab<\/span> : <span class=\"cm-variable\">longNotePrefab<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  .<span class=\"cm-variable\">GetComponent<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">NoteControllerBase<\/span><span class=\"cm-operator\">&gt;<\/span>()<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  .<span class=\"cm-variable\">noteProperty<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">noteProperty<\/span>;<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-plain md-expand\">Bms\u6587\u4ef6\u4e2d\u7684\u8b5c\u9762<\/span><\/p><\/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<div class=\"elementor-element elementor-element-df3f53b elementor-widget elementor-widget-image\" data-id=\"df3f53b\" 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=\"733\" height=\"1043\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_24.png\" class=\"attachment-medium_large size-medium_large wp-image-1844\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_24.png 733w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_24-211x300.png 211w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_24-720x1024.png 720w\" sizes=\"auto, (max-width: 733px) 100vw, 733px\" \/>\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-494f2d6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"494f2d6\" 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-c530500\" data-id=\"c530500\" 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-833ea60 elementor-widget elementor-widget-text-editor\" data-id=\"833ea60\" 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 md-focus-container\"><p class=\"md-end-block md-p md-focus\">\u904a\u6232\u5834\u666f\u4e2d\u7684\u8b5c\u9762<\/p><\/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-a457bac elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a457bac\" 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-3223a62\" data-id=\"3223a62\" 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-89105c3 elementor-widget elementor-widget-image\" data-id=\"89105c3\" 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=\"768\" height=\"786\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_25-768x786.png\" class=\"attachment-medium_large size-medium_large wp-image-1845\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_25-768x786.png 768w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_25-293x300.png 293w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_25.png 908w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>\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-736c9d3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"736c9d3\" 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-d9e84e7\" data-id=\"d9e84e7\" 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-8760d05 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"8760d05\" 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-b06f39d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b06f39d\" 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-7a86809\" data-id=\"7a86809\" 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-2270161 elementor-widget elementor-widget-text-editor\" data-id=\"2270161\" 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\">\u8b5c\u9762\uff08\u6709\u62cd\u5b50\u8207\u901f\u5ea6\u8b8a\u5316\uff09\u7684\u8b80\u53d6<\/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\">\u5982\u679c\u4e00\u500b\u8b5c\u9762\u88e1<span style=\"color: #ff0000;\">\u6709\u901f\u5ea6\uff08BPM\uff09\u6216\u62cd\u5b50\u8b8a\u5316<\/span>\uff0c\u5176bms\u6587\u6a94\u4e2d\u7684\u6578\u64da\u53ef\u80fd\u6703\u51fa\u73fe\u4ee5\u4e0b\u5e7e\u7a2e\u8b8a\u5316<\/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;\">Main Data\u90e8\u5206<\/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;\">\u901a\u9053\u7de8\u865f03\uff1a\u76f4\u63a5\u6307\u5b9aBPM\u578b\u7684\u901f\u5ea6\u8b8a\u5316<\/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;\">\u76f4\u63a5\u5728\u6578\u64da\u672c\u9ad4\u90e8\u5206\u4ee5\u4e00\u500b2\u4f4d\u5341\u516d\u9032\u5236\u6578\u6307\u5b9aBPM\uff0801~FF\uff09\uff0c\u5176\u53ef\u80fdBPM\u70ba1~255<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u901a\u9053\u7de8\u865f08\uff1a\u6307\u5b9aBPM\u7d22\u5f15\u7684\u901f\u5ea6\u8b8a\u5316<\/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;\">\u9996\u5148\u5728Header\u90e8\u5206\u4e2d\u5b9a\u7fa9\u7d22\u5f15\u548c\u5c0d\u61c9\u7684BPM\uff0c\u7136\u5f8c\u5728Main Data\u90e8\u5206\u901a\u904e\u6307\u5b9a\u7d22\u5f15\u800c\u4e0d\u662f\u76f4\u63a5\u6307\u5b9aBPM\u4f86\u6539\u8b8a\u7bc0\u594f<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u9019\u500b\u65b9\u6cd5\u53ef\u4ee5\u6307\u5b9a\u4efb\u610f\u7684BPM\u8b8a\u5316\uff0c\u7d22\u5f15\u503c\u70ba0~9\u3001A~Z\u7d44\u5408\u800c\u6210\u76842\u4f4d36\u9032\u5236\u6578\u5b57<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u901a\u9053\u7de8\u865f02\uff1a\u62cd\u5b50\u8b8a\u5316<\/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;\">\u9019\u500b\u547d\u4ee4\u8207\u5176\u4ed6Main Data\u4e0d\u540c\uff0c\u9019\u500b\u547d\u4ee4\u662f\u5728\u5206\u9694\u7b26\u300c\uff1a\u300d\u4e4b\u5f8c\u7684\u7528\u4e00\u500b\u5be6\u6578\u503c\u6307\u5b9a<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u9019\u662f\u8f49\u63db\u70ba\u5be6\u6578\u7684\u62cd\u865f\u7684\u5206\u6578\uff0c\u6bd4\u5982\u57284\u5206\u4e4b3\u62cd\u865f\u7684\u60c5\u6cc1\u4e0b\uff0c\u8a72\u5be6\u6578\u70ba3 \/ 4 = 0.75<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u6c92\u6709\u9019\u500b\u547d\u4ee4\u7684\u5c0f\u7bc0\u5747\u4ee54\u5206\u4e4b4\u62cd\u865f\u4f86\u89e3\u91cb<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">Header\u90e8\u5206<\/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;\">#BPMnn bpm<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\"><span style=\"color: #ff0000;\">\u5b9a\u7fa9Main Data\u90e8\u5206\u7684\u901a\u9053\u7de8\u865f\u70ba08\u7684\u6578\u64da\u7684BPM Index\u3002nn\u5c31\u662f\u8a72BPM\u7684\u7d22\u5f15\uff0c\u7136\u5f8c\u7528\u4e00\u500b\u534a\u89d2\u7a7a\u683c\u5206\u9694\u958b\u7684\uff0c\u5c31\u662f\u8a72index\u4e0b\u5c0d\u61c9\u7684BPM<\/span>\u3002<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-plain\">\u5efa\u7acb\u4e00\u500b\u5305\u542b\u4e86\u8b8a\u901f\u548c\u8b8a\u62cd\u5143\u7d20\u7684\u4f8b\u5b50\u8b5c\u9762<\/span><\/p><\/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-2cc8aeb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2cc8aeb\" 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-4559d69\" data-id=\"4559d69\" 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-f3ccdf3 elementor-widget elementor-widget-image\" data-id=\"f3ccdf3\" 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=\"768\" height=\"904\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_26-768x904.png\" class=\"attachment-medium_large size-medium_large wp-image-1846\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_26-768x904.png 768w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_26-255x300.png 255w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_26-870x1024.png 870w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_26.png 958w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>\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-654ca2c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"654ca2c\" 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-eeca23a\" data-id=\"eeca23a\" 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-19be7f7 elementor-widget elementor-widget-text-editor\" data-id=\"19be7f7\" 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 class=\"md-end-block md-p\">\u8a72\u8b5c\u9762\u7684bms\u6587\u4ef6\u5167\u5bb9\u5982\u4e0b\u5716\uff1a<\/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-c0a2df2 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c0a2df2\" 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-9a28a88\" data-id=\"9a28a88\" 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-fcf2674 elementor-widget elementor-widget-image\" data-id=\"fcf2674\" 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=\"627\" height=\"682\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_27.png\" class=\"attachment-medium_large size-medium_large wp-image-1847\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_27.png 627w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_27-276x300.png 276w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/>\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-84aeff2 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"84aeff2\" 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-bc73c56\" data-id=\"bc73c56\" 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-5af66bc elementor-widget elementor-widget-text-editor\" data-id=\"5af66bc\" 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 class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain md-expand\">\u5728\u8a72\u8b5c\u9762\u4e2d\uff0c\u5171\u67096\u500b\u62cd\u5b50\u8b8a\u5316\u4ee5\u53ca5\u500b\u901f\u5ea6\u8b8a\u5316<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u9996\u5148\u662f\u62cd\u5b50\u8b8a\u5316\uff08\u901a\u9053\u7de8\u865f02\uff09\uff0c\u8a72\u8b5c\u9762\u7684\u62cd\u5b50\u8b8a\u5316\u904e\u7a0b\u5982\u4e0b\u8868\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><figure class=\"md-table-fig\"><table class=\"md-table\"><thead><tr class=\"md-end-block\"><th><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u5c0f\u7bc0<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u901a\u9053<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">Data\u672c\u9ad4<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u4ee3\u8868\u7684\u62cd\u5b50<\/span><\/span><\/th><\/tr><\/thead><tbody><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">000<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">02<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">0.75<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">3 \/ 4\u62cd\u5b50<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">001<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">02<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">1<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">4 \/ 4\u62cd\u5b50<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">002<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">02<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">1.75<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">7 \/ 4\u62cd\u5b50<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">003<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">02<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">1.375<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">11 \/ 8 \u62cd\u5b50<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">004<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">02<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">0.9375<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">15 \/ 16\u62cd\u5b50<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">005~999<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">02<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">1<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">4 \/ 4\u62cd\u5b50<\/span><\/span><\/td><\/tr><\/tbody><\/table><\/figure><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5728\u4e0a\u8868\u4e2d\uff0c\u5be6\u969b\u986f\u793a\u5728<span style=\"color: #ff0000;\">bms\u6587\u4ef6\u88e1\u7684\u53ea\u6709000\u3001002\u3001003\u3001004\u56db\u500b\u5c0f\u7bc0\u7684\u62cd\u5b50\u8b8a\u5316\uff0c\u4f46\u5be6\u969b\u4e0a\uff0c\u7531\u65bc\u9019\u4e9b\u62cd\u5b50\u8b8a\u5316\u4e26\u4e0d\u6703\u5ef6\u7e8c\u5230\u4e0b\u4e00\u62cd\uff0c\u6240\u4ee5\uff0c\u6c92\u6709\u660e\u78ba\u6307\u5b9a\u62cd\u5b50\u6578\u7684\u5c0f\u7bc0\uff0c\u4e00\u5f8b\u6703\u91cd\u7f6e\u70ba4\/4\u62cd\u5b50\u3002<\/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\">\u56e0\u6b64\uff0c<span style=\"color: #ff0000;\">4\u500b\u660e\u78ba\u6307\u5b9a\u7684\u8b8a\u62cd\u5c0f\u7bc0\uff08000\u3001002\u3001003\u3001004\uff09\u52a0\u4e0a2\u500b\u9ed8\u8a8d\u62cd\u5b50\u7684\u5c0f\u7bc0\uff08001\u3001005~999\uff09\uff0c\u51716\u6b21\u62cd\u5b50\u8b8a\u5316<\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7136\u5f8c\u662f\u901f\u5ea6\u8b8a\u5316<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5169\u500b<span style=\"color: #ff0000;\">\u76f4\u63a5\u6307\u5b9a\u578b\uff08\u901a\u9053\u7de8\u865f03\uff09<\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><figure class=\"md-table-fig\"><table class=\"md-table\"><thead><tr class=\"md-end-block\"><th><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u5c0f\u7bc0<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u901a\u9053<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">Data\u672c\u9ad4<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u4ee3\u8868\u7684BPM<\/span><\/span><\/th><\/tr><\/thead><tbody><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">000<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">03<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">78<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">78(16) = 120(10)<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">002<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">03<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">00 00 00 00 FF 00 00<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">FF(16) = 255(10)<\/span><\/span><\/td><\/tr><\/tbody><\/table><\/figure><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u9019\u7a2e\u985e\u578b\u7684\u901f\u5ea6\u8b8a\u5316\uff0c<span style=\"color: #ff0000;\">BPM\u4ee501~FF\u768416\u9032\u5236\u6578\u8868\u793a\uff0c\u56e0\u6b64\u5177\u9ad4BPM\u9700\u8981\u5c0716\u9032\u5236\u6578\u8f49\u63db\u70ba10\u9032\u5236\u6578\u624d\u80fd\u77e5\u9053\u3002<\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u9019\u88e1\u7684<span style=\"color: #ff0000;\">\u8b8a\u901f\u767c\u751f\u6642\u6a5f\u8207\u4e00\u822cnotes\u4e00\u6a23\uff0c&#8221;00&#8243;\u4e5f\u662f\u4f11\u6b62\u7b26\u7684\u610f\u601d\u3002<\/span>\u5728\u7b2c2\u5c0f\u7bc0\u4e2d\uff0c\u8a72\u5c0f\u7bc0\u88ab\u5206\u62107\u7b49\u5206\u7684\u56db\u5206\u97f3\u7b26\uff0c\u524d\u97624\u500b\u56db\u5206\u97f3\u7b26\u751a\u9ebc\u4e5f\u4e0d\u505a\uff0c\u800c\u5728\u7b2c5\u62cd\uff08\u7b2c5\u500b\u56db\u5206\u97f3\u7b26\uff09\u7684\u958b\u59cb\u628aBPM\u8b8a\u6210255\u3002<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4e09\u500b<span style=\"color: #ff0000;\">\u7d22\u5f15\u6307\u5b9a\u578b\uff08\u901a\u9053\u7de8\u865f08\uff09<\/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\">Header\u90e8\u5206<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><figure class=\"md-table-fig\"><table class=\"md-table\"><thead><tr class=\"md-end-block\"><th><span class=\"td-span\"><span class=\"md-plain\">\u884c<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u7d22\u5f15<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u6578\u64da\u672c\u9ad4<\/span><\/span><\/th><\/tr><\/thead><tbody><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#BPM01 120.2<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">01<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">120.2<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#BPM02 256<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">02<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">256<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#BPM03 65535.9999<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">03<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">65535.9999<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#BPM04 0.1<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">04<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">0.1<\/span><\/span><\/td><\/tr><\/tbody><\/table><\/figure><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Main Data\u90e8\u5206<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><figure class=\"md-table-fig\"><table class=\"md-table\"><thead><tr class=\"md-end-block\"><th><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u5c0f\u7bc0<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u901a\u9053<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/th><th><span class=\"td-span\"><span class=\"md-plain\">\u6578\u64da\u672c\u9ad4<\/span><\/span><\/th><\/tr><\/thead><tbody><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">001<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">08<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">00 01 00 00<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">003<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">08<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">00 00 00 00 02 00 03 00 00 00 00<\/span><\/span><\/td><\/tr><tr class=\"md-end-block\"><td><span class=\"td-span\"><span class=\"md-plain\">#<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">004<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">08<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">:<\/span><\/span><\/td><td><span class=\"td-span\"><span class=\"md-plain\">00 00 00 00 00 04<\/span><\/span><\/td><\/tr><\/tbody><\/table><\/figure><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u5728Header\u4e2d\u6307\u5b9a\u4e86\u7684\u7d22\u5f15\u53ef\u4ee5\u76f4\u63a5\u5728Main Data\u88e1\u9762\u4f7f\u7528\u3002\u5177\u9ad4\u7684\u767c\u751f\u6642\u6a5f\u8003\u616e\u8207\u4e00\u822c\u7684notes\u4e00\u6a23\u3002<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6bd4\u5982\u5728\u7b2c3\u5c0f\u7bc0\uff0811\/8\u62cd\uff09\uff0c\u5c0f\u7bc0\u88ab\u5206\u6210\u4e8611\u7b49\u5206\u76848\u5206\u97f3\u7b26\uff0c\u5728\u7b2c5\u62cd\uff0c\u4e5f\u5c31\u662f\u7b2c5\u500b8\u5206\u97f3\u7b26\u6642\uff0cBPM\u6703\u8b8a\u6210256\uff1b\u5230\u7b2c7\u500b8\u5206\u97f3\u7b26\u6642\uff0cBPM\u6703\u8b8a\u621065535.9999<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\" style=\"color: #ff0000;\">\u901f\u5ea6\u8b8a\u5316\u4e0d\u540c\u65bc\u62cd\u5b50\u8b8a\u5316\uff0c\u4e00\u65e6\u901f\u5ea6\u88ab\u6307\u5b9a\uff0c\u8a72\u901f\u5ea6\u6703\u4e00\u76f4\u5ef6\u7e8c\u81f3\u4e0b\u4e00\u6b21\u660e\u78ba\u6307\u5b9aBPM\u7684\u62cd\u5b50\u70ba\u6b62<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u8981\u8b80\u53d6\u5305\u542b\u62cd\u5b50\u8207\u901f\u5ea6\u8b8a\u5316\u7684\u8b5c\u9762\uff0cBmsLoader\u5728\u89e3\u6790bms\u683c\u5f0f\u6587\u4ef6\u6642\uff0c\u9700\u8981\u9032\u884c\u4e00\u5b9a\u7684\u4fee\u6539<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\"><span style=\"color: #ff0000;\">\u6dfb\u52a0\u65b0\u7684\u6578\u64da\u985e\u578b<\/span>\uff1a\u62cd\u5b50\u6539\u8b8a\uff08\u901a\u9053\u7de8\u865f02\uff09\u3001\u76f4\u63a5\u6307\u5b9a\u578bBPM\u6539\u8b8a\uff08\u901a\u9053\u7de8\u865f03\uff09\u3001\u7d22\u5f15\u6307\u5b9a\u578bBPM\u6539\u8b8a\uff08\u901a\u9053\u7de8\u865f08\uff09<\/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\">\/\/\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\">}<\/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-comment\">\/\/1: SingleNote; 5: LongNote<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/02: \u62cd\u5b50\u6539\u8b8a; 03: \u76f4\u63a5\u6307\u5b9a\u578bBPM\u6539\u8b8a; 08: \u7d22\u5f15\u6307\u5b9a\u578bBPM\u6539\u8b8a<\/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\">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><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\"><span style=\"color: #ff0000;\">\u589e\u52a0\u5c0d\u62cd\u5b50\u8b8a\u5316\u6578\u64da\u7684\u8655\u7406\uff1a\u4fee\u6539\u5c0f\u7bc0\u9577\u5ea6\u6578\u7d44\u4e2d\uff0c\u8a72\u62cd\u5b50\u8b8a\u5316\u767c\u751f\u7684\u5c0f\u7bc0\u4e2d\u7684\u5c0f\u7bc0\u9577\u5ea6\u3002\u5177\u9ad4\u4fee\u6539\u70ba\u5c07\u5176\u6578\u64da\uff08\u8868\u793a\u76844\u5206\u4e4bn\u62cd\u7684\u5c0f\u6578\uff09* 4\uff0c\u8f49\u63db\u6210\u5be6\u969b\u7684\u62cd\u5b50\u6578\u3002<\/span><\/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\">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-keyword\">if<\/span>(<span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Success<\/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-variable\">DataType<\/span> <span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">GetDataType<\/span>(<span class=\"cm-variable\">channel<\/span>);<\/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-keyword\">if<\/span>(<span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">MEASURE_CHANGE<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/*<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">* \u4fee\u6539\u8a72\u5c0f\u7bc0\u7684\u9577\u5ea6 <\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">* \u5c0f\u7bc0\u9577\u5ea6\u9ed8\u8a8d\u70ba4\u62cd\uff0c\u62cd\u5b50\u6539\u8b8a\uff0c\u5c0f\u7bc0\u9577\u5ea6\u6539\u8b8a <\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">* \u8868\u793a\u62cd\u5b50\u6539\u8b8a\u7684\u6578\u64da\u672c\u9ad4\uff08body\uff09\u662f\u4e00\u500b\u5c0f\u6578<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">* \u9019\u500b\u5c0f\u6578\u662f\u300c\u4e00\u5c0f\u7bc0\u4e2d\u88ab\u5206\u6210\u591a\u5c11\u7b49\u5206\u7684\u56db\u5206\u97f3\u7b26\u300d\u7684\u5206\u6578\u8f49\u63db\u800c\u6210<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">* \u6bd4\u59824\u5206\u4e4b4\u62cd\uff0c\u5c0f\u7bc0\u88ab\u7b49\u5206\u62104\u500b4\u5206\u97f3\u7b26\uff0c\u5206\u6578\u8868\u793a\u70ba4\/4 = 1<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">* \u800c4\u5206\u4e4b3\u62cd\uff0c\u5c0f\u7bc0\u88ab\u7b49\u5206\u70ba3\u500b4\u5206\u97f3\u7b26\uff0c\u5206\u6578\u8868\u793a\u70ba3\/4 = 0.75<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">* \u56e0\u6b64\uff0c\u8981\u77e5\u9053\u4e00\u5c0f\u7bc0\u6709\u591a\u5c11\u62cd\uff08\u5c0f\u7bc0\u9577\u5ea6\uff09\u5c31\u9700\u8981\u628a\u8a72\u5c0f\u6578\u4e58\u4ee54<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-comment\">*\/<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"><span style=\"color: #ff0000;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">measureLengths<\/span>[<span class=\"cm-variable\">measureNum<\/span>] <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Convert<\/span>.<span class=\"cm-variable\">ToSingle<\/span>(<span class=\"cm-variable\">body<\/span>) <span class=\"cm-operator\">*<\/span> <span class=\"cm-number\">4f<\/span>; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span> \u00a0<\/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\">\/\/...<\/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;\">\u589e\u52a0\u5c0dBPM\u8b8a\u5316\u6578\u64da\u7684\u8655\u7406\uff1a\u8b80\u53d6BPM\u7684\u6578\u64da\uff0c\u4e26\u5c07\u5176\u52a0\u5230\u901f\u5ea6\u8b8a\u5316\u4fe1\u606f\u5217\u8868\uff08tempoChanges\uff09\u4e2d\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\">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-keyword\">if<\/span>(<span class=\"cm-variable\">match<\/span>.<span class=\"cm-variable\">Success<\/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-keyword\">if<\/span>(<span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">DataType<\/span>.<span class=\"cm-variable\">MEASURE_CHANGE<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/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\">SINGLE_NOTE<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \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\">LONG_NOTE<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">DIRECT_TEMPO_CHANGE<\/span> <span class=\"cm-operator\">||<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"cm-variable\">dataType<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">INDEXED_TEMPO_CHANGE<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">for<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-variable\">objCount<\/span>; <span class=\"cm-variable\">i<\/span><span class=\"cm-operator\">++<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<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><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \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\">LONG_NOTE<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \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\">DIRECT_TEMPO_CHANGE<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u76f4\u63a5\u6307\u5b9a\u578b\u7684BPM\u7bc4\u570d\u70ba01~FF\u768416\u9032\u5236\u6578\uff0810\u9032\u5236\u4e0b\u70ba1 - 255\uff09<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u628a\u7269\u9ad4\u7de8\u865f\u8f49\u63db\u70ba10\u9032\u5236BPM\u6578\u5b57<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">tempo<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Convert<\/span>.<span class=\"cm-variable\">ToInt32<\/span>(<span class=\"cm-variable\">objNum<\/span>, <span class=\"cm-number\">16<\/span>);<\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">tempoChanges<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TempoChange<\/span>(<span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">tempo<\/span>));<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \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\">INDEXED_TEMPO_CHANGE<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\" style=\"color: #ff0000;\">\/\/\u7d22\u5f15\u6307\u5b9a\u578b\u4f7f\u7528Header\u4e2d\u5b9a\u7fa9\u7684\u7d22\u5f15:BPM\u4f86\u4fee\u6539BPM<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7576\u524d\u7269\u9ad4\u7de8\u865f = Header\u4e2d\u7684\u7d22\u5f15<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u56e0\u6b64\u9700\u8981\u5f9eHeader\u6578\u64da\u4e2d\u53d6\u5f97\u8a72\u7d22\u5f15\u4e0b\u7684BPM<\/span><\/span><br \/><span style=\"color: #ff0000;\" role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">tempo<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Convert<\/span>.<span class=\"cm-variable\">ToSingle<\/span>(<span class=\"cm-variable\">headerData<\/span>[<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"BPM{objNum}\"<\/span>]);<\/span><br \/><span role=\"presentation\"><span style=\"color: #ff0000;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">tempoChanges<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">TempoChange<\/span>(<span class=\"cm-variable\">beat<\/span>, <span class=\"cm-variable\">tempo<\/span>));<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  } \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  } \u00a0 <\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><\/ul><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7136\u5f8c\u5617\u8a66\u4fee\u6539\u4e00\u4e0bPlayerController\u8981\u8b80\u53d6\u7684bms\u6587\u4ef6\u70ba&#8221;sample2.bms&#8221;\uff0c\u4e26\u8f38\u51fa\u8a72\u8b5c\u9762\u7684\u8b8a\u901f\u8207\u62cd\u5b50\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=\"c#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable\">TempoChange<\/span> <span class=\"cm-variable\">tempoChange<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">beatMap<\/span>.<span class=\"cm-variable\">tempoChangeDatas<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Debug<\/span>.<span class=\"cm-variable\">Log<\/span>(<span class=\"cm-variable\">$<\/span><span class=\"cm-string\">\"{tempoChange.beat} : {tempoChange.tempoAfterChanged}\"<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/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-588a040 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"588a040\" 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-15cc642\" data-id=\"15cc642\" 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-fde51f6 elementor-widget elementor-widget-image\" data-id=\"fde51f6\" 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=\"582\" height=\"334\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_28.png\" class=\"attachment-large size-large wp-image-1848\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_28.png 582w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/07\/Img_28-300x172.png 300w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/>\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\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-1842","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\/1842","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=1842"}],"version-history":[{"count":11,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/1842\/revisions"}],"predecessor-version":[{"id":1858,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/1842\/revisions\/1858"}],"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=1842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/categories?post=1842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/tags?post=1842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}