前提・実現したい事
前回Unity2D(C#)で画面をクリックしたら、Shape2Dの色を順番に変える方法にて質問をさせて頂いたのですが、
更に色を変更すると同時に一緒にキャラクターを出現させて移動させたいのですが上手くいきません。
考えているのが、色を変える時にInstantiateでキャラを生成しよと思うのですが、エラーが出ます。
追記
キャラを生成する際に1つずつ生成をしたいです。
エラー内容
/Test/Assets/Script/NewBehaviourScript.cs(38,38): Error CS1061: 'Shape' に 'kyara' の定義が含まれておらず、型 'Shape' の最初の引数を受け付けるアクセス可能な拡張メソッド 'kyara' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください。 (CS1061)
試したこと
現在のNewBehaviourScript.csで生成するのでは無く、Shape.csの方でGameobjectを指定して生成しようとしたのですが、
publicや[SerializeField]を付けてもインスペクター上に表示されません。
そこで直接コードで指定
public Object kyara = GameObject.Find("ファイル名");
とやっても駄目でした。
UnityのInspectorで変数を表示する方法まとめ
も参考にしました。
shape.cs
アセットを使っています。
前回と似た内容で申し訳ありません。
的外れな見解かもしれませんが、解決方法、その他の方法がありましたら、お力添えよろしくお願いします。
shape.csは文字制限で記載できませんでした。
該当コード
NewBehaviourScript.cs
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using Shapes2D; 5 6public class NewBehaviourScript : MonoBehaviour 7{ 8 public static NewBehaviourScript instance; 9 10 11 12 public Shape[] shapes; 13 public float time = 0; 14 public GameObject kyara; //動かしたいキャラクター 15 16 17 18 // 何番のシェイプを赤色にするかを示すインデックス 19 public int activeShapeIndex = -1; 20 21 22 private void Awake() 23 { 24 instance = this; 25 } 26 27 28 29 30 void Update() 31 { 32 33 34 if (Input.GetMouseButtonDown(0)) 35 { 36 37 38 time = 0; 39 40 // クリックのたびにactiveShapeIndexを次に進む 41 activeShapeIndex++; 42 43 44 45 // shapesの個数で割った余りをとる 46 activeShapeIndex %= shapes.Length; 47 48 // activeShapeIndex番目のシェイプは赤に、それ以外は白に切り替える 49 for (var i = 0; i < shapes.Length; i++) 50 { 51 52 53 shapes[i].settings.fillColor = i == activeShapeIndex ? Color.yellow : Color.white; 54 55 'エラー箇所 56 //キャラを生成する 57 Instantiate(shapes[i].kyara, transform.position, transform.rotation);' 58 59 } 60 61 } 62 63} 64 65 66
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/02 04:36
2021/02/02 08:13
退会済みユーザー
2021/02/03 08:06
2021/02/04 13:39 編集