敵をクリックしたらシーンに移動し、移動先でクリックした敵のプレファブをインスタンス化したいのですが、
上手くいきません。
コードではレイにヒットしたレイヤータグによってif文で分けて、それぞれにstaticで区別値を挿入してシーン間で橋渡ししようとしてます。
シーン移動先のENEMシーン, Controller.csでは区別値によってインスタンス化する敵を分けようとしていますが、
上手く橋渡しができません。呼出元か呼出先の書き方が間違っているのでしょうか?
それと本当に遷移先でインスタンス化ができるのか不安も残ってます。
少々複雑ですが、お助けの程よろしくお願いします。
//MONSシーン,GameManager.cs public string EnemyLayerName = "Enemy"; //レイヤータグ代入 public string EnemyLayerName1 = "Enemy1"; //レイヤータグ代入 //レイの設定 public bool RegisterHitGameObject(PointerEventData data) { int mask = BuildLayerMask(); //レイヤーマスク代入 int mask1 = BuildLayerMask1(); //レイヤーマスク代入 Ray ray = Camera.main.ScreenPointToRay(data.position); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, mask)) { var go = hitInfo.collider.gameObject; int i = hitpoint; //区別値 ※質問時のinstantからiに編集されています getHitPoint(i); //区別値 ※質問時のinstantからiに編集されています HandleHitGameObject(go); //シーン制御へ return true; } else if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, mask1)) { print("Object hit " + hitInfo.collider.gameObject.name); var go = hitInfo.collider.gameObject; int i = hitpoint1; //区別値1 ※質問時のinstant1からiに編集されています getHitPoint1(i); //区別値1 ※質問時のinstant1からiに編集されています HandleHitGameObject(go); //シーン制御へ return true; } return false; } //区別値 private static int hitpoint = 0; //※質問時のpublicからprivateに編集されています public static int getHitPoint(int i) //このメンバ変数を渡す { return i; } //区別値1 private static int hitpoint1 = 1; //※質問時のpublicからprivateに編集されています public static int getHitPoint1(int i) //このメンバ変数を渡す { return i; } //シーン制御 private void HandleHitGameObject(GameObject go) { if(go.GetComponent<Enemy>()!= null) { if (EnemyScene == null ) { SceneManager.LoadSceneAsync(EnemySceneName, LoadSceneMode.Additive); } } //レイヤーマスク決定 private int BuildLayerMask() { return 1 << LayerMask.NameToLayer(EnemyLayerName); } private int BuildLayerMask1() { return 1 << LayerMask.NameToLayer(EnemyLayerName1); } //ENEMシーン, Controller.cs public GameObject enemyPrefab; public GameObject enemyPrefab1; int resulthit = GameManager.getHitPoint(i); //受け取る エラー ※.getHitPoint();から.getHitPoint(i)に編集されています int resulthit1 = GameManager.getHitPoint1(i); //受け取る エラー ※.getHitPoint1();から.getHitPoint1(i)に編集されています // Use this for initialization void Start () { int resulthit = GameManager.getHitPoint(); //エラー int resulthit1 = GameManager.getHitPoint1(); //エラー } private void Enemy() { if(resulthit == 0) { Instantiate(enemyPrefab); } else if(resulthit1 == 1) { Instantiate(enemyPrefab1); } } //エラー内容 現在のコンテキストに'i'という名前は存在しません。 現在のコンテキストに'i'という名前は存在しません。 現在のコンテキストに'result'という名前は存在しません。 現在のコンテキストに'result1'という名前は存在しません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/02 10:45
2017/12/03 04:15
2017/12/04 03:53