前提・実現したいこと
ランダムエンカウント後にランダムにモンスターをインスタンス化してバトルをしたいのですが、下記の内容で困っています。
C#で攻撃をするとダメージを与えるシステムを作っております。
恐らく、Random.Rangeでランダムにプレハブをインスタンス化している所が下記の原因だとは思うのですが、
public Enemy enemy;記載時に下記の問題がおきました。
発生している問題・エラーメッセージ
インスペクター上で設定出来る様にしているのですがEnemy側は設定できません。
エラーメッセージ
エラーコードはなし
該当のソースコード
TrainScript1
1using UnityEngine; 2using System.Collections; 3public class TrainScript1 : MonoBehaviour 4{ 5public GameObject[] Train; 6 7void Start () 8 { 9 10 11 12int number = Random.Range (0, Train.Length); 13Instantiate(Train[number],transform.position,transform.rotation); 14 15 } 16}
該当のソースコード
Enemy
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Enemy : MonoBehaviour 6{ 7[SerializeField] 8 private int maxHp; 9 10 private int hp; 11 12 [SerializeField] 13 public int atk; 14 15 [SerializeField] 16 private int speed; 17 18 19 // Start is called before the first frame update 20 private void Start() 21 { 22 hp = maxHp; 23 } 24 25 // Update is called once per frame 26 public int MyHp 27 { 28 get 29 { 30 return hp; 31 } 32 private set 33 { 34 hp = value; 35 } 36 } 37 38 // 持っているスキル 39[SerializeField] 40private List<Skill> skillList = null; 41 42public void SetSkillList(List<Skill> skillList) { 43 this.skillList = skillList; 44} 45 46public List<Skill> GetSkillList() { 47 return skillList; 48} 49 50public int MyAtk 51 { 52 get 53 { 54 return atk; 55 } 56 private set 57 { 58 atk = value; 59 } 60 } 61 62 public int MySpeed 63 { 64 get 65 { 66 return speed; 67 } 68 private set 69 { 70 speed = value; 71 } 72 } 73 74 public void OnDamage(int _damage) 75 { 76 hp -= _damage; 77 } 78} 79
該当のソースコード
Batlle
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Batlle : MonoBehaviour 6{ 7public Player player; 8public Enemy enemy; 9 // Start is called before the first frame update 10 void Start() 11 { 12 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 19 } 20 public void PushAttackButton() 21 { 22 enemy.OnDamage(player.atk); 23 24 } 25} 26
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
タグに Unity を追加したほうがいいと思います。(おそらくタイトルにも)
このタイトルでは単なる C# の質問と思われて Unity に詳しい人にスルーされる可能性があります。
タグにUnityを追加してください。
また、質問内容がよくわかりませんでした。推測ですが「インスペクタ上でBatlleスクリプトにEnemyスクリプトをアタッチできないのは何故か」が質問でしょうか。
質問のタイトルを見て、その質問内容が分かるようタイトルを修正してください。
また、Unityの基本操作についての質問だと思うので、公式ドキュメントにも目を通してみてください。https://docs.unity3d.com/ja/2018.4/Manual/CreatingAndUsingScripts.html
kozuchiさん
ありがとうございます。
記載しました。
BluOxyさん
Unityの記載をしました。
また質問内容は推測の通りです。
かしこまりました公式のドキュメントも参考にいたします。
回答1件
あなたの回答
tips
プレビュー