teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

タイトル修正

2021/11/08 09:06

投稿

L_KemonoFriends
L_KemonoFriends

スコア1

title CHANGED
@@ -1,1 +1,1 @@
1
- unityのコードの一部関数にしたい
1
+ プログラム短くしたい
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
  現在、assetのeasysaveでセーブデータを保存しようとしてます。
4
- menunum==1の中を数百回ぐらい書く予定なので少でもプログラムを短くしたいです。
4
+ 質問用タグ1~2の中をプログラムを短くしたいです。
5
5
  str2とstr4を文字列の変数で実装する方法が存在する場合に教えて頂きたいです。
6
6
  str2とstr4が実装できれば質問用タグ1~2の間を関数にできます。
7
7
 
@@ -18,11 +18,12 @@
18
18
 
19
19
 
20
20
 
21
+ 方法が存在しない場合は存在しないと教えて欲しいです。
21
22
 
22
23
  ### 発生している問題・エラーメッセージ
23
24
 
24
25
  ```
25
- プログラムが冗長
26
+ なし
26
27
  ```
27
28
 
28
29
  ### 該当のソースコード
@@ -47,7 +48,7 @@
47
48
  }
48
49
 
49
50
  //指定されたメニュー内のデータを全てセーブする
50
- //save_load=0 セーブ //save_load=1 ロード //save_load=2 初期化
51
+ //save_load=0 セーブ //save_load=1 ロード
51
52
  public void MenuAllSave(int menu_num , string sl_flag )
52
53
  {
53
54
  if(menu_num == 1)//メニュー1のデータを全部保存する
@@ -61,6 +62,7 @@
61
62
  //const string str4 = "ESSTR001"; //読み込む変数名
62
63
  const string str5 = "わーい"; //初Load時の値
63
64
 
65
+
64
66
  //ーーーー質問用タグ1ーーーー
65
67
  GameObject obj = GameObject.Find(str1);
66
68
  spt = obj.GetComponent<InputBox>();
@@ -75,9 +77,10 @@
75
77
  }
76
78
  else
77
79
  {
78
- //コンパイルエラーが出るようにする
80
+ //エラーが出るようにする(throw等)
79
81
  }
80
82
  //ーーーー質問用タグ2ーーーー
83
+
81
84
  }
82
85
  else if(menu_num == 2)//メニュー2のデータを全部保存する
83
86
  {
@@ -85,7 +88,7 @@
85
88
  }
86
89
  else
87
90
  {
88
- //コンパイルエラーが出るようにする
91
+ //エラーが出るようにする(throw等)
89
92
  }
90
93
  }
91
94
  }

2

例を載せてさらに質問を分かりやすくした。

2021/11/08 09:06

投稿

L_KemonoFriends
L_KemonoFriends

スコア1

title CHANGED
File without changes
body CHANGED
@@ -10,14 +10,15 @@
10
10
 
11
11
  spt = obj.GetComponent<InputBox>();
12
12
  の<InputBox>をstringの変数で定義したい
13
+ spt = obj.GetComponent<str2>();のように置き換えられると嬉しい。
13
14
 
14
15
  ES3.Save<string>(str0 , spt.ESSTR001 , str3);
15
16
  のESSTR001をstringの変数で定義したい
17
+ ES3.Save<string>(str0 , spt.str4 , str3);のように置き換えられると嬉しい。
16
18
 
17
19
 
18
20
 
19
21
 
20
-
21
22
  ### 発生している問題・エラーメッセージ
22
23
 
23
24
  ```

1

何が知りたいのか分かりにくかったため質問を修正しました

2021/11/02 09:40

投稿

L_KemonoFriends
L_KemonoFriends

スコア1

title CHANGED
@@ -1,1 +1,1 @@
1
- unityのコードを短くしたい
1
+ unityのコードの一部関数にしたい
body CHANGED
@@ -2,11 +2,22 @@
2
2
 
3
3
  現在、assetのeasysaveでセーブデータを保存しようとしてます。
4
4
  menunum==1の中身を数百回ぐらい書く予定なので少しでもプログラムを短くしたいです。
5
- str2とstr4を文字列で実装する方法が存在する場合に教えて頂きたいです。
5
+ str2とstr4を文字列の変数で実装する方法が存在する場合に教えて頂きたいです。
6
+ str2とstr4が実装できれば質問用タグ1~2の間を関数にできます。
6
7
 
7
- エラーメッセージは無くsaveとloadはできます。
8
8
 
9
+ 具体的には下記の2点が行えると嬉しいです。
9
10
 
11
+ spt = obj.GetComponent<InputBox>();
12
+ の<InputBox>をstringの変数で定義したい
13
+
14
+ ES3.Save<string>(str0 , spt.ESSTR001 , str3);
15
+ のESSTR001をstringの変数で定義したい
16
+
17
+
18
+
19
+
20
+
10
21
  ### 発生している問題・エラーメッセージ
11
22
 
12
23
  ```
@@ -48,7 +59,8 @@
48
59
  const string str3 = "menu001.es3"; //セーブファイル名
49
60
  //const string str4 = "ESSTR001"; //読み込む変数名
50
61
  const string str5 = "わーい"; //初Load時の値
62
+
51
-
63
+ //ーーーー質問用タグ1ーーーー
52
64
  GameObject obj = GameObject.Find(str1);
53
65
  spt = obj.GetComponent<InputBox>();
54
66
 
@@ -64,6 +76,7 @@
64
76
  {
65
77
  //コンパイルエラーが出るようにする
66
78
  }
79
+ //ーーーー質問用タグ2ーーーー
67
80
  }
68
81
  else if(menu_num == 2)//メニュー2のデータを全部保存する
69
82
  {
@@ -75,66 +88,6 @@
75
88
  }
76
89
  }
77
90
  }
78
-
79
-
80
-
81
-
82
- ///以下使用例
83
-
84
- using System.Collections;
85
- using System.Collections.Generic;
86
- using UnityEngine;
87
- using UnityEngine.UI;//インプットボックスの使用で必要
88
-
89
- public class InputBox : MonoBehaviour
90
- {
91
- public Text writetext; //パスを描写したいオブジェクト(テキスト持ち限定)
92
- public InputField mytext; //入力欄のテキスト
93
-
94
- public string ESSTR001; //配列名を変えたらSaveScriptも更新すること
95
-
96
- // Start is called before the first frame update
97
- void Start()
98
- {
99
- writetext = writetext.GetComponent<Text> (); //反映先のテキストオブジェクトのTextコンポーネントを入れる
100
- mytext = mytext.GetComponent<InputField> (); //どの入力欄から情報を読み取るかを保存//今回は自分自身
101
- //writetext.text = mytext.text; //入力欄のtextを反映先のtxtにコピー
102
-
103
- MenuSave(1,"load");
104
- writetext.text = ESSTR001; //ロードした数値を反映先のtextに書き込み
105
- mytext.text = ESSTR001; //ロードした数値を入力欄のtextに書き込み
106
- }
107
-
108
- // Update is called once per frame
109
- void Update()
110
- {
111
-
112
- }
113
-
114
- //何か変更が加えられた時等に再生するプログラム
115
-
116
- //入力欄のtextを反映先のオブジェクトのtextにコピー
117
- public void InputText()
118
- {
119
- //パスを描写するテキストにinputFieldの内容を反映
120
- writetext.text = mytext.text;//入力欄のtextを反映先のtxtにコピー
121
-
122
-
123
- ESSTR001 = mytext.text;//入力欄のtextをeasysave用配列に保存
124
- MenuSave(1,"save");
125
- }
126
-
127
- /// <summary>save,load用の関数です。saveしたい変数がある場合に下へ追加する関数</summary>
128
- /// <param name="menu_num">セーブしたいメニューの番号</param>
129
- /// <param name="sl_flag">save、loadの文字列</param>
130
- /// <returns>無し</returns>
131
- private void MenuSave(int menu_num , string sl_flag)
132
- {
133
- GameObject obj = GameObject.Find("SAVEscript");
134
- obj.GetComponent<SaveScript>().MenuAllSave(menu_num,sl_flag);
135
- }
136
- }
137
-
138
91
  ```
139
92
 
140
93
  ### 試したこと