質問編集履歴
3
タイトル修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
プログラムを短くしたい
|
body
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
3
|
現在、assetのeasysaveでセーブデータを保存しようとしてます。
|
4
|
-
|
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 ロード
|
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
例を載せてさらに質問を分かりやすくした。
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
何が知りたいのか分かりにくかったため質問を修正しました
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
|
### 試したこと
|