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

回答編集履歴

3

プロパティのほうがいいかも?

2021/04/22 00:08

投稿

fiveHundred
fiveHundred

スコア10420

answer CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  testBallのスクリプト
18
18
  ```C#
19
- public Enemy Shooter; // 発射元のEnemyを格納するための変数
19
+ public Enemy Shooter; // 発射元のEnemyを格納するための変数(プロパティのほうがいいかも?)
20
20
  ```
21
21
 
22
22
  Enemyのスクリプト

2

コードの修正

2021/04/22 00:08

投稿

fiveHundred
fiveHundred

スコア10420

answer CHANGED
@@ -24,6 +24,6 @@
24
24
  void shootTestBall()
25
25
  {
26
26
  var newTestBall = Instantiate(testBall) as GameObject; // testBallはプレハブ
27
- newTestBall.Shooter = this;
27
+ newTestBall.GetComponent<TestBall>().Shooter = this; // TestBallはtestBallのスクリプト
28
28
  }
29
29
  ```

1

追記・thisについて修正

2021/04/22 00:07

投稿

fiveHundred
fiveHundred

スコア10420

answer CHANGED
@@ -3,4 +3,27 @@
3
3
  この場合、同じプレハブから生成しても区別できるので、プレハブEnemyとEnemy2の構造が同じなのであれば、わざわざEnemy2を用意する必要はありません。
4
4
 
5
5
  なお、thisは今のインスタンス自身(例えばtestBallスクリプトであれば、そのtestBall自身)を指すもので、例えば``this.foo``は(他に``foo``が無ければ)``foo``と同じものです。
6
- 従って、今回とは関係ないはずです。
6
+ ~~従って、今回とは関係ないはずです。~~
7
+ ↑追記にあるように自分自身を返したいときは使いますね。失礼しました。
8
+
9
+ ---
10
+
11
+ 追記:
12
+
13
+ > testBallが、自身の生まれたEnemy本体をFindする(?)方法等わかりますでしょうか。。。
14
+
15
+ 以下のように、生成したときにEnemyを格納すればよろしいかと思います。
16
+
17
+ testBallのスクリプト
18
+ ```C#
19
+ public Enemy Shooter; // 発射元のEnemyを格納するための変数
20
+ ```
21
+
22
+ Enemyのスクリプト
23
+ ```C#
24
+ void shootTestBall()
25
+ {
26
+ var newTestBall = Instantiate(testBall) as GameObject; // testBallはプレハブ
27
+ newTestBall.Shooter = this;
28
+ }
29
+ ```