Prefabにスクリプトを参照させたい。
オブジェクトをプレハブ化してランダムにスポーンさせ、そのオブジェクトをターゲットの方向に移動させたいのですが、ターゲットやスコアが書かれたスクリプトがプレハブ化すると参照できません。Instantitateさせた後参照する方法など教えていただけたら幸いです。
参照させたいソースコード
public class Enemy : MonoBehaviour { //ターゲット public GameObject target; public float speed; //スコア public CountText ct; private int Status; void Start() { ct = GameObject.Find("CountText").GetComponent<CountText>(); Status = 0; } void Update() { transform.position = Vector3.MoveTowards(transform.position, target.transform.position, speed); } public void OnClickAct() { Destroy(this.gameObject); if(Status == 0) { ct.Score += 10; } } }
プレハブを出現させるソースコード
[Header("Set Enemy Prefab")] public GameObject enemyPrefab; [Header("Set Interval Min and Max")] [Range(1f, 3f)] public float minTime = 2f; [Range(5f, 10f)] public float maxTime = 5f; [Header("Set X Position Min and Max")] [Range(-10f, 0f)] public float xMinPosition = -10f; [Range(0f, 10f)] public float xMaxPosition = 10f; [Header("Set Y Position Min and Max")] [Range(-10f, 0f)] public float yMinPosition = 0f; [Range(0f, 20f)] public float yMaxPosition = 10f; [Header("Set Z Position Min and Max")] private float interval; private float time = 0f; void Start() { interval = GetRandomTime(); } void Update() { time += Time.deltaTime; if (time > interval) { //スポーン GameObject Enemy = Instantiate(enemyPrefab); Enemy.transform.position = GetRandomPosition(); time = 0f; interval = GetRandomTime(); } } private float GetRandomTime() { return Random.Range(minTime, maxTime); } private Vector3 GetRandomPosition() { float x = Random.Range(xMinPosition, xMaxPosition); float y = Random.Range(yMinPosition, yMaxPosition); return new Vector3(x, y); }
試したこと
Instantitateの後にGetComponentで試したのですが出来ませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/22 07:55