// Update is called once per frame void Update() { //新しいシーンに移った時の処理 if (scene != scene_before) { Debug.Log("next scene"); Debug.Log(scene); //scene before 更新 scene_before = scene; //このシーンで消すべきもの //TODO(シーン単位ではなく、時間で決めるかも) for (int i = 0; i < delete_list[scene].Count; i++) { if (delete_list[scene].ElementAt(i) == "text") { ObjectAppear.insideText.SetActive(false); } else { ObjectAppear.Deleteobj(delete_list[scene].ElementAt(i)); } } //時間を新しくカウントし始める scene_start_time = TimeManager.time; scene_timer = 0; //plotを1つ進める plot_count++; } //正規表現により,で分割するため string pattern = ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"; Regex reg = new Regex(pattern); //plotが進められた時 if (plot_count_before != plot_count) { //更新 plot_count_before = plot_count; //メモリ節約のため一行ずつ解析する //separators = new char[] { ',' }; //plots = plotLine[plot_count].Split(separators, StringSplitOptions.RemoveEmptyEntries); plots = reg.Split(plotLine[plot_count]).Where(s => s != String.Empty).ToArray <string>(); Debug.Log(plots[0]); Debug.Log(plots[1]); Debug.Log(plots[2]); Debug.Log(plots[3]); Debug.Log(plots[4]); //0:scene 1:time 2:type 3:content 4:size 5:d 6:lon 7:lat 8:rotate_p 9lotate_y 10:delete 11:eng 12:color //2/quote/1/台詞@改行あり/6/20/10/2/english/-120/0 string src; switch (plots[2]) { case "bg": src = folder_name + "/" + plots[3]; ChangeImage.ChangeBg(src); break; case "img": //パラメータの取得 //0:scene 1:time 2:type 3:content 4:size 5:d 6:lon 7:lat 8:rotate_p 9lotate_y 10:delete 11:eng 12:color src = folder_name + "/" + plots[3]; float scalei = float.Parse(plots[4]); float disi = float.Parse(plots[5]); int loni = int.Parse(plots[6]); int lati = int.Parse(plots[7]); int rotatei = int.Parse(plots[8]); int rotate2i = int.Parse(plots[9]); int deletei = int.Parse(plots[10]); ObjectAppear.Addimg(img_id, src, disi, lati, loni, scalei, rotatei, rotate2i); delete_list[deletei].Add("img" + img_id); //delete_list[deletei].Add(src); img_id++; break; case "quote": string[] lines; //パラメータの取得 //0:scene 1:time 2:type 3:content 4:size 5:d 6:lon 7:lat 8:rotate_p 9lotate_y 10:delete 11:eng 12:color if (LanguageButton.language_flag == 0) { //改行コードで分割 lines = plots[3].Split(new string[] { "\n", "\r", "@" }, StringSplitOptions.None); } else { lines = plots[11].Split(new string[] { "\n", "\r", "@" }, StringSplitOptions.None); } string textq = lines[0]; for (int i = 1; i < lines.Length; i++) { textq += "\n"; textq += lines[i]; } float scaleq = float.Parse(plots[4]); float disq = float.Parse(plots[5]); int lonq = int.Parse(plots[6]); int latq = int.Parse(plots[7]); int fromq = int.Parse(plots[8]); //use rotate_p int deleteq = int.Parse(plots[10]); Debug.Log("quote check"); Debug.Log(textq); ObjectAppear.Addquote(quote_id, textq, disq, latq, lonq, scaleq, fromq); delete_list[deleteq].Add("quote" + quote_id); quote_id++; break; case "next": //パラメータの取得 //0:scene 1:time 2:type 3:content 4:size 5:d 6:lon 7:lat 8:rotate_p 9lotate_y 10:delete 11:eng 12:color float disn = float.Parse(plots[5]); int lonn = int.Parse(plots[6]); int latn = int.Parse(plots[7]); int deleten = int.Parse(plots[10]); /* * if (plots.Length > 10) * { * NextButton.transition_type[next_id] = plots[10]; * } * else * { * NextButton.transition_type[next_id] = "nothing"; * }*/ ObjectAppear.Addnext(next_id, disn, latn, lonn); delete_list[scene + 1].Add("next" + next_id); next_id++; break; /*case "obj": //object(assset) * src = plots[3]; //folder_name + "/" + plots[3]; * float diso = float.Parse(plots[4]); * int lato = int.Parse(plots[5]); * int lono = int.Parse(plots[6]); * int rotateo = int.Parse(plots[9]); * int deleteo = int.Parse(plots[7]); * ObjectAppear.Addobj(obj_id, src, diso, lato, lono, rotateo); * //delete_list[deleteo].Add("obj" + obj_id); * delete_list[deleteo].Add(src); * obj_id++; * break; */ case "sphere": //パラメータの取得 //0:scene 1:time 2:type 3:content 4:size 5:d 6:lon 7:lat 8:rotate_p 9lotate_y 10:delete 11:eng 12:color src = folder_name + "/" + plots[3]; float scales = float.Parse(plots[4]); int rotates = int.Parse(plots[8]); int deletes = int.Parse(plots[10]); ObjectAppear.Addsphere(sphere_id, src, scales, rotates); delete_list[deletes].Add("sphere" + sphere_id); //delete_list[deletes].Add(src); sphere_id++; break; case "text": string[] linest; //パラメータの取得 //0:scene 1:time 2:type 3:content 4:size 5:d 6:lon 7:lat 8:rotate_p 9lotate_y 10:delete 11:eng 12:color if (LanguageButton.language_flag == 0) { linest = plots[3].Split(new string[] { "\n", "\r", "@" }, StringSplitOptions.None); } else { linest = plots[11].Split(new string[] { "\n", "\r", "@" }, StringSplitOptions.None); } string textt = linest[0]; for (int i = 1; i < linest.Length; i++) { textt += "\n"; textt += linest[i]; } int deletet = int.Parse(plots[10]); string colort = plots[12]; ObjectAppear.ChangeInsideText(textt, colort); delete_list[deletet].Add("text"); break; /* * case "delete": * src = plots[3]; //folder_name + "/" + plots[3]; * for (int i = 0; i < scene_max; i++) * { * if (delete_list[i].Contains(src) == true) * { * delete_list[i].Remove(src); * ObjectAppear.Deleteobj(src); * } * } * break; */ case "end": SceneManager.LoadScene("menu", LoadSceneMode.Single); break; default: Debug.Log("Default case"); break; } } //plot_countを進める条件(時間) if (plots[2] != "next") { if (plot_count < plotLine.Length) { //next_time = int.Parse(plotLine[plot_count + 1].Split(separators, StringSplitOptions.RemoveEmptyEntries)[0]); string[] next_plots = reg.Split(plotLine[plot_count + 1]).Where(s => s != String.Empty).ToArray <string>(); next_time = int.Parse(next_plots[1]); //Debug.Log("lengthOK nextTime " + next_time +" nowtime " + (TimeManager.time - scene_start_time)); if ((TimeManager.time - scene_start_time) >= next_time) { //Debug.Log("TimeOK"); plot_count++; } } } if (Input.GetKeyDown(KeyCode.Space)) { while (plots[2] != "next") { plot_count++; //plots = plotLine[plot_count].Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); } scene++; } }
// Update is called once per frame void Update() { if (scene != scene_before) { scene_before = scene; //このsceneでdeleteすべきものがあれば消す for (int i = 0; i < delete_list[scene].Count; i++) { if (delete_list[scene].ElementAt(i) == "text") { ObjectAppear.insideText.SetActive(false); } else { ObjectAppear.Deleteobj(delete_list[scene].ElementAt(i)); } } scene_start_time = TimeManager.time; plot_count++; } if (plot_count_before != plot_count) { plot_count_before = plot_count; separators = new char[] { '/' }; plots = plotLine[plot_count].Split(separators, StringSplitOptions.RemoveEmptyEntries); string src; switch (plots[1]) { case "bg": src = plots[3]; //folder_name + "/" + plots[3]; ChangeImage.ChangeBg(src); break; case "img": src = plots[3]; //folder_name + "/" + plots[3]; float scalei = float.Parse(plots[2]); float disi = float.Parse(plots[4]); int lati = int.Parse(plots[5]); int loni = int.Parse(plots[6]); int rotatei = int.Parse(plots[9]); int rotate2i; if (plots.Length > 10) { rotate2i = int.Parse(plots[10]); } else { rotate2i = 0; } int deletei = int.Parse(plots[7]); ObjectAppear.Addimg(img_id, src, disi, lati, loni, scalei, rotatei, rotate2i); delete_list[deletei].Add(src); img_id++; break; case "quote": string[] lines; if (LanguageButton.language_flag == 0) { lines = plots[3].Split(new string[] { "\n", "\r", "@" }, StringSplitOptions.None); } else { lines = plots[8].Split(new string[] { "\n", "\r", "@" }, StringSplitOptions.None); } string textq = lines[0]; for (int i = 1; i < lines.Length; i++) { textq += "\n"; textq += lines[i]; } float disq = float.Parse(plots[4]); int latq = int.Parse(plots[5]); int lonq = int.Parse(plots[6]); float scaleq = float.Parse(plots[2]); int fromq = int.Parse(plots[9]); int deleteq = int.Parse(plots[7]); ObjectAppear.Addquote(quote_id, textq, disq, latq, lonq, scaleq, fromq); delete_list[deleteq].Add("quote" + quote_id); quote_id++; break; case "next": float disn = float.Parse(plots[4]); int latn = int.Parse(plots[5]); int lonn = int.Parse(plots[6]); int deleten = int.Parse(plots[7]); if (plots.Length > 10) { NextButton.transition_type[next_id] = plots[10]; Debug.Log("transision set!: " + next_id + " " + plots[10]); } else { NextButton.transition_type[next_id] = "nothing"; } ObjectAppear.Addnext(next_id, disn, latn, lonn); delete_list[deleten].Add("next" + next_id); next_id++; break; case "obj": src = plots[3]; //folder_name + "/" + plots[3]; float diso = float.Parse(plots[4]); int lato = int.Parse(plots[5]); int lono = int.Parse(plots[6]); int rotateo = int.Parse(plots[9]); int deleteo = int.Parse(plots[7]); ObjectAppear.Addobj(obj_id, src, diso, lato, lono, rotateo); //delete_list[deleteo].Add("obj" + obj_id); delete_list[deleteo].Add(src); obj_id++; break; case "sphere": src = plots[3]; //folder_name + "/" + plots[3]; float scales = float.Parse(plots[2]); //float diss = float.Parse(plots[4]); //int lats = int.Parse(plots[5]); //int lons = int.Parse(plots[6]); int rotates = int.Parse(plots[9]); int deletes = int.Parse(plots[7]); ObjectAppear.Addsphere(sphere_id, src, scales, rotates); //delete_list[deletes].Add("sphere" + sphere_id); delete_list[deletes].Add(src); sphere_id++; break; case "text": string[] linest; if (LanguageButton.language_flag == 0) { linest = plots[3].Split(new string[] { "\n", "\r", "@" }, StringSplitOptions.None); } else { linest = plots[8].Split(new string[] { "\n", "\r", "@" }, StringSplitOptions.None); } string textt = linest[0]; for (int i = 1; i < linest.Length; i++) { textt += "\n"; textt += linest[i]; } int deletet = int.Parse(plots[7]); string colort = plots[10]; ObjectAppear.ChangeInsideText(textt, colort); delete_list[deletet].Add("text"); break; case "delete": src = plots[3]; //folder_name + "/" + plots[3]; for (int i = 0; i < scene_max; i++) { if (delete_list[i].Contains(src) == true) { delete_list[i].Remove(src); ObjectAppear.Deleteobj(src); } } break; case "end": SceneManager.LoadScene("menu", LoadSceneMode.Single); break; default: Console.WriteLine("Default case"); break; } separators = new char[] { '/' }; //次の行を読む /* * if (plot_count < plotLine.Length-1) * { * plots = plotLine[plot_count + 1].Split(separators, StringSplitOptions.RemoveEmptyEntries); * next_time = int.Parse(plots[0]); * }*/ } //plot_countを進める条件(時間) if (plots[1] != "next") { //Debug.Log("plot " + plot_count +" type "+plots[1]); if (plot_count < plotLine.Length) { next_time = int.Parse(plotLine[plot_count + 1].Split(separators, StringSplitOptions.RemoveEmptyEntries)[0]); //Debug.Log("lengthOK nextTime " + next_time +" nowtime " + (TimeManager.time - scene_start_time)); if ((TimeManager.time - scene_start_time) >= next_time) { //Debug.Log("TimeOK"); plot_count++; } } } /* * if((next_time > 0)&&(TimeManager.time-scene_start_time) >= next_time){ * plot_count++; * }*/ if (Input.GetKeyDown(KeyCode.Space)) { while (plots[1] != "next") { separators = new char[] { '/' }; plot_count++; plots = plotLine[plot_count].Split(separators, StringSplitOptions.RemoveEmptyEntries); } scene++; } }