質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

317閲覧

スクリプトにプレハブをアタッチしたが、not been assignedエラーが出る

l_h_l_h

総合スコア22

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/04/20 06:35

unityにて、簡単なシューティングゲームを作っています

画面の右側にプレイヤーの残機を表示させようと思い、残機用の画像をプレハブ化し、以下のコードで実装を試みました(関数check_rem内)
for文で残機数の数だけループを回し、プレハブをインスタンス化していこうと考えたのですが、the variable Remaining of HeroScript has not been assignedと出てしまいます
主人公の発射する弾、hero_shotに関しては同様の実装で動いたのですが、残機については上手くいきません
hero_shot,Remainingのプレハブはheroscriptにアタッチしてあります
何か他に考えられる原因はあるでしょうか
よろしくお願いいたします

using

1using System.Collections.Generic; 2using UnityEngine; 3 4public class HeroScript : MonoBehaviour { 5 6 public GameObject hero_shot; 7 public GameObject Remaining; 8 public static int rem = 3; 9 bool flag = false; 10 // Use this for initialization 11 12 IEnumerator Start() 13 { 14 while(true){ 15 // 0.05秒待つ 16 yield return new WaitForSeconds(0.1f); 17 flag = true; 18 } 19 } 20 21 // Update is called once per frame 22 void Update () { 23 attack(); 24 move(); 25 26 check_rem(); 27 28 } 29 void check_rem() 30 { 31 for (int i = 0; i < rem; i++) 32 { 33 Vector2 rem_place = new Vector2(300+i*30, 130); 34 Instantiate(Remaining, rem_place, Quaternion.identity); 35 } 36 } 37 void attack() 38 { 39 Vector2 shot_place = new Vector2(this.transform.position.x, this.transform.position.y + 1); 40 if (Input.GetKey(KeyCode.Z)) 41 { 42 if (flag) 43 { 44 Instantiate(hero_shot, shot_place, Quaternion.identity); 45 flag = false; 46 } 47 } 48 } 49 void move() 50 { 51 Vector3 worldPos = this.transform.position; 52 Camera camera = Camera.main; 53 Vector3 viewportPos = camera.WorldToViewportPoint(worldPos); 54 if (Input.GetKey(KeyCode.UpArrow)) 55 { 56 if (viewportPos.y > 1.0f) return; 57 transform.position = new Vector2(this.transform.position.x, this.transform.position.y + 0.1f); 58 //transform.position += transform.forward * 0.01f; 59 } 60 if (Input.GetKey(KeyCode.DownArrow)) 61 { 62 if (viewportPos.y < 0f) return; 63 transform.position = new Vector2(this.transform.position.x, this.transform.position.y - 0.1f); 64 } 65 if (Input.GetKey(KeyCode.RightArrow)) 66 { 67 if (viewportPos.x > 1.0f) return; 68 transform.position = new Vector2(this.transform.position.x + 0.1f, this.transform.position.y); 69 } 70 if (Input.GetKey(KeyCode.LeftArrow)) 71 { 72 if (viewportPos.x < 0f) return; 73 transform.position = new Vector2(this.transform.position.x - 0.1f, this.transform.position.y); 74 } 75 } 76 77 public void gameover() 78 { 79 if (rem == 0) 80 { 81 this.gameObject.SetActive(false); 82 } 83 else 84 { 85 rem -= 1; 86 } 87 } 88} 89 90コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

申し訳ございません
アタッチしたつもりでしたが、アタッチする場所を間違えていて、アタッチできていませんでした……
エラーは取り除けたのでコードの修正に取り組みたいと思います

投稿2018/04/20 07:22

l_h_l_h

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問