前提・実現したいこと
現在、assetのeasysaveでセーブデータを保存しようとしてます。
質問用タグ1~2の中を関数化してプログラムを短くしたいです。
str2とstr4を文字列の変数で実装する方法が存在する場合に教えて頂きたいです。
str2とstr4が実装できれば質問用タグ1~2の間を関数にできます。
具体的には下記の2点が行えると嬉しいです。
spt = obj.GetComponent<InputBox>();
の<InputBox>をstringの変数で定義したい
spt = obj.GetComponent<str2>();のように置き換えられると嬉しい。
ES3.Save<string>(str0 , spt.ESSTR001 , str3);
のESSTR001をstringの変数で定義したい
ES3.Save<string>(str0 , spt.str4 , str3);のように置き換えられると嬉しい。
方法が存在しない場合は存在しないと教えて欲しいです。
発生している問題・エラーメッセージ
なし
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class SaveScript : MonoBehaviour 6{ 7 // Start is called before the first frame update 8 void Start() 9 { 10 11 } 12 13 // Update is called once per frame 14 void Update() 15 { 16 17 } 18 19 //指定されたメニュー内のデータを全てセーブする 20 //save_load=0 セーブ //save_load=1 ロード 21 public void MenuAllSave(int menu_num , string sl_flag ) 22 { 23 if(menu_num == 1)//メニュー1のデータを全部保存する 24 { 25 InputBox spt; //スクリプト名 26 const string str0 = "x1"; //key 27 const string str1 = "入力欄"; //スクリプトがアタッチされたオブジェクト名 28 //const string str2 = "InputBox"; //スクリプト名 29 //const string str2 = spt.GetType(); // 30 const string str3 = "menu001.es3"; //セーブファイル名 31 //const string str4 = "ESSTR001"; //読み込む変数名 32 const string str5 = "わーい"; //初Load時の値 33 34 35 //ーーーー質問用タグ1ーーーー 36 GameObject obj = GameObject.Find(str1); 37 spt = obj.GetComponent<InputBox>(); 38 39 if(sl_flag == "save") 40 { 41 ES3.Save<string>(str0 , spt.ESSTR001 , str3); 42 } 43 else if(sl_flag == "load") 44 { 45 spt.ESSTR001 = ES3.Load<string>(str0,str3,defaultValue:str5); 46 } 47 else 48 { 49 //エラーが出るようにする(throw等) 50 } 51 //ーーーー質問用タグ2ーーーー 52 53 } 54 else if(menu_num == 2)//メニュー2のデータを全部保存する 55 { 56 57 } 58 else 59 { 60 //エラーが出るようにする(throw等) 61 } 62 } 63}
試したこと
ーー
補足情報(FW/ツールのバージョンなど)
unityのバージョンは2019.4.2f1です。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/16 17:27
2021/11/16 21:31