私は同じクラスを2つ持っています.1つは主武器用で、もう1つは副武器です。ここに私のクラスである:オブジェクトを作成できませんC#
public class weapon : MonoBehaviour {
public string Name { get; set; }
public float Damages { get; set; }
public float FireRate { get; set; }
public float Range { get; set; }
public float BulletSpeed { get; set; }
public bool isOn { get; set; }
public weapon(string name, float damages, float fireRate, float range, float bulletSpeed, bool ison) {
this.Name = name;
this.Damages = damages;
this.FireRate = fireRate;
this.Range = range;
this.BulletSpeed = bulletSpeed;
this.isOn = ison;
}
}
public class weapon1 : MonoBehaviour {
public string Name { get; set; }
public float Damages { get; set; }
public float FireRate { get; set; }
public float Range { get; set; }
public float BulletSpeed { get; set; }
public bool isOn { get; set; }
public weapon1(string name, float damages, float fireRate, float range, float bulletSpeed, bool ison) {
this.Name = name;
this.Damages = damages;
this.FireRate = fireRate;
this.Range = range;
this.BulletSpeed = bulletSpeed;
this.isOn = ison;
}
}
私は別のスクリプトにしたい、私は「F」を押すと、武器はそれぞれ自分のスペックを取るが、それは二番目に名前を与えることで立ち往生、ここに私のスクリプトがあることそのスペック彼らに与える:
void Update() {
if (Input.GetKeyDown (KeyCode.F)) {
GetComponent<weapon>().Name = "Rien";
GetComponent<weapon>().Damages = 0;
GetComponent<weapon>().FireRate = 0;
GetComponent<weapon>().Range = 0;
GetComponent<weapon>().BulletSpeed = 0;
GetComponent<weapon>().isOn = true;
Debug.Log (GetComponent<weapon>().Name);
GetComponent<weapon1>().Name = "Rien1"; //stuck here... :'(
GetComponent<weapon1>().Damages = 0;
GetComponent<weapon1>().FireRate = 0;
GetComponent<weapon1>().Range = 0;
GetComponent<weapon1>().BulletSpeed = 0;
GetComponent<weapon1>().isOn = false;
Debug.Log(GetComponent<weapon1>().Name);
}
}
私は取得しています
このように、まったく同じ複数のクラスを作成しないでください。あるクラスを作成し、それを必要なだけ何回もインスタンス化し、メンバーを変更して各インスタンスを一意にします。 –
さて、 'GetComponent()'は 'null'を返しました。あなたは 'weapon'と' weapon1'スクリプトの両方がSAMEオブジェクトにあると確信していますか?また、まったく同じコードで、別の名前の2つのクラスを持つのは悪いスタイルだとわかります。それを変更して維持するのは痛いでしょう。 1つの「武器」スクリプトを実行し、プライマリとセカンダリの武器を区別する別のプロパティを追加します。 –
あなたは私がどのようにすべきか考えていますか? – Ay0m3