回答編集履歴

4

コードの修正

2021/08/17 05:38

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  {
78
78
 
79
- weaponPower = Random.Range(1, 100 + 1);
79
+ UpdateWeaponPower();
80
80
 
81
81
  }
82
82
 

3

修正

2021/08/17 05:38

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -114,6 +114,8 @@
114
114
 
115
115
  weaponDate.Add(weapon);
116
116
 
117
+ // 5回処理をループしたいだけなので、i は使用しない
118
+
117
119
  for (int i = 0; i < 5; i++)
118
120
 
119
121
  {

2

追記

2021/08/17 05:36

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- public int UpdateWeaponPower()
85
+ public void UpdateWeaponPower()
86
86
 
87
87
  {
88
88
 

1

追記

2021/08/17 05:33

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -49,3 +49,83 @@
49
49
 
50
50
 
51
51
  仮に同一のオブジェクトを参照したことが原因で同じ乱数が出力されるのであれば、このメソッドを利用することで解決するでしょう。
52
+
53
+
54
+
55
+ ----
56
+
57
+
58
+
59
+ そうではなく Weapon が持つ weaponPower を5回変更したい場合はメソッドを定義して利用します。
60
+
61
+ MonoBehavior.Start はスクリプトが有効になったときに Unity 側で呼び出される特別なメソッドなので、別途ユーザが利用するためのメソッドを用意する必要があります。
62
+
63
+
64
+
65
+ ```C#
66
+
67
+ public class Weapon : MonoBehaviour
68
+
69
+ {
70
+
71
+ public int weaponPower;
72
+
73
+
74
+
75
+ private void Start()
76
+
77
+ {
78
+
79
+ weaponPower = Random.Range(1, 100 + 1);
80
+
81
+ }
82
+
83
+
84
+
85
+ public int UpdateWeaponPower()
86
+
87
+ {
88
+
89
+ weaponPower = Random.Range(1, 100 + 1);
90
+
91
+ }
92
+
93
+ }
94
+
95
+ ```
96
+
97
+
98
+
99
+ ```C#
100
+
101
+ public class WeaponList : MonoBehaviour
102
+
103
+ {
104
+
105
+ public List<Weapon> weaponDate = new List<Weapon>();
106
+
107
+
108
+
109
+ public void WeaponCreate()
110
+
111
+ {
112
+
113
+ var weapon = GameObject.Find("obj").GetComponent<Weapon>();
114
+
115
+ weaponDate.Add(weapon);
116
+
117
+ for (int i = 0; i < 5; i++)
118
+
119
+ {
120
+
121
+ weapon.UpdateWeaponPower();
122
+
123
+ Debug.Log(weapon.weaponPower);
124
+
125
+ }
126
+
127
+ }
128
+
129
+ }
130
+
131
+ ```