【Unity】時間割アプリ9日目
ここまでのまとめです
空のオブジェクト TimeTableCont、Imput(Prefab)、OneTimeTable(Prefab)に以下のスクリプトをそれぞれアタッチしました。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class TimeTableCont : MonoBehaviour { public TMP_Dropdown dropdown_Jigen, dropdown_Days; public GridLayoutGroup gridLayoutGroup; public GameObject Ott, OttHolder; private GameObject ImputField; private GameObject Setting; private GameObject nowSetTimeTable; public GameObject TimeTableHolder; private GameObject hoge; void Awake() { ImputField = GameObject.Find("Imput"); Setting = GameObject.Find("Setting"); nowSetTimeTable = null; } private void Start() { ImputField.SetActive(false); Setting.SetActive(false); } public void SettingActive() { Setting.SetActive(true); } public void SettingNotActive() { Setting.SetActive(false); } public void ImputFieldActive() { ImputField.SetActive(true); } public void ImputFieldNotActive() { ImputField.SetActive(false); } public GameObject GetImputField() { return ImputField; } public void setTimetable(string name) { nowSetTimeTable = GameObject.Find(name); } public GameObject getOneTimeTable() { return nowSetTimeTable; } public void ResetJikanwari() { //Debug.Log(PlayerPrefs.GetString("OneTimeTable (4)Name_Room")); PlayerPrefs.DeleteAll(); //Application.Quit(); } public void DeleteAllTimeTable(string Tagname) { GameObject[] gameObjects = GameObject.FindGameObjectsWithTag(Tagname); foreach (var g in gameObjects) { Destroy(g); Debug.Log("destroy"); } } public int GetDropDownValue_Jigen() { Debug.Log(dropdown_Jigen.value); return dropdown_Jigen.value + 1; } public int GetDropDownValue_Days() { switch (dropdown_Days.value) { case 0: return 5; case 1: return 6; default: return 7; } } public void SettingSettingTouch() { /* 時間割をとりあえず全て削除する 曜日を読み取る 時限を読み取る glgのどっちかを揃える 曜日かける時間分のコマを作る */ DeleteAllTimeTable("OneTimeTable"); //GetDropDownValue_Jigen(); gridLayoutGroup.constraintCount = GetDropDownValue_Days(); for (int i = 0; i < (GetDropDownValue_Days() * GetDropDownValue_Jigen()); i++) { hoge = Instantiate(Ott); hoge.name = hoge.name + i; hoge.transform.parent = OttHolder.transform; } SettingNotActive(); } }
Imputにつける
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class ImputCont : MonoBehaviour { private TimeTableCont TTCont; private GameObject ThisOneTimeTable,ThisOTTSub,ThisOTTRoom; public TextMeshProUGUI ImputSub,ImputRoom; private TextMeshProUGUI TTSub,TTRoom; void Start() { TTCont = GameObject.Find("TimeTableCont").GetComponent<TimeTableCont>(); } public void IfTouch() { ThisOneTimeTable= GameObject.Find(TTCont.getOneTimeTable().name); Debug.Log(ThisOneTimeTable.name); ThisOTTSub=ThisOneTimeTable.transform.Find("Name_Subject").gameObject; TTSub=ThisOTTSub.GetComponent<TextMeshProUGUI>(); ThisOTTRoom=ThisOneTimeTable.transform.Find("Field_Room").transform.Find("Name_Room").gameObject; TTRoom=ThisOTTRoom.GetComponent<TextMeshProUGUI>(); TTSub.text="講義名"; if(ImputSub!=null){ TTSub.text=ImputSub.text; //Rewrite(TTSub.text,ImputSub.text); Setdata(ThisOneTimeTable.name,ThisOTTSub.name,TTSub); } TTRoom.text="教室名"; if(ImputRoom!=null){ TTRoom.text=ImputRoom.text; Setdata(ThisOneTimeTable.name,ThisOTTRoom.name,TTRoom); } ImputRoom.text=string.Empty; ImputSub.text=string.Empty; Debug.Log(PlayerPrefs.GetString(ThisOneTimeTable.name+ThisOTTRoom.name,"教室名")); Debug.Log(ThisOneTimeTable.name+ThisOTTRoom.name); Debug.Log(PlayerPrefs.GetString(ThisOneTimeTable.name,"nanika")); PlayerPrefs.Save(); TTCont.ImputFieldNotActive(); } public void Setdata(string parentName,string childName,TextMeshProUGUI tmp){ var kye=parentName+childName; //Debug.Log(kye+"key"); var value=tmp.text; PlayerPrefs.SetString(kye,value); } public string GetData(string key,string deforuto){ return PlayerPrefs.GetString(key,deforuto); } }
OneTimeTableにつける
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class OneTimeTableCont : MonoBehaviour { private TimeTableCont timeTableCont; private ImputCont imputCont; public GameObject ImputContGM; public TextMeshProUGUI Name_Subject, Name_Room; public GameObject GMName_Subject,GMName_Room; private void Awake() { //ImputContGM=GameObject.Find("Imput"); } void Start() { timeTableCont = GameObject.Find("TimeTableCont").GetComponent<TimeTableCont>(); imputCont = ImputContGM.GetComponent<ImputCont>(); //保存されているものがあるならそれにする、ないならそれぞれのにする Name_Subject.text=imputCont.GetData(getName()+"Name_Subject",""); Name_Room.text=imputCont.GetData(getName()+"Name_Room",""); } // ボタンを押された時の処理、ダイアログを表示する public void ifTouch() { timeTableCont.ImputFieldActive(); timeTableCont.setTimetable(getName()); } private string getName() { return this.gameObject.name; } private string getSubname() { return Name_Subject.text; } private string getRoomname() { return Name_Room.text; } }
ねこもなか