ねこもなかぶろぐ

ねこもなかのぶろぐです

【Unity】時間割アプリ9日目

ここまでのまとめです


f:id:nekomonaka:20191001211847p:plain
ヒエラルキーはこんな感じになりました


空のオブジェクト 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 OttOttHolder;
    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()
    {
        ThisOneTimeTableGameObject.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_SubjectName_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;
    }
}


ねこもなか