У меня есть два скрипта C#.
Один для пушки:Unity3D C# Inheritance Issue
using UnityEngine;
using System.Collections;
public class CannonScript : MonoBehaviour {
public GameObject bullet; //bullet object
public Transform spawnpoint; //spawn point
float bulletspeed=-3000f; //bullet speed
public int bullets=10; //number of bullets
void Update() {
if ((Input.GetKeyDown ("space") || Input.GetMouseButtonDown(0)) && bullets > 0) {
GameObject newbullet; //make a new bullet
newbullet=Instantiate(bullet,spawnpoint.position, spawnpoint.rotation)as GameObject; //instantiate the new bullet
newbullet.rigidbody.AddForce(spawnpoint.forward * bulletspeed); //add force to the new bullet
bullets--; //decrease the number of bullets left
}
}
}
Другой текст пользовательского интерфейса на экране:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class BulletCountScript : CannonScript { //inherit from the CannonScript
Text text;
void Start() {
text = GetComponent<Text>();
}
void Update() {
text.text = bullets.ToString(); //display the number of bullets
}
}
Когда я запускаю его, текст пользовательского интерфейса на экране не меняется.
Я знаю, что CannonScript работает правильно, потому что я могу снимать только 10 пуль.
Как я могу отобразить текст в пользовательском интерфейсе, оставшееся от пуль?
Я делаю что-то неправильно с наследованием?
Wow! Оно работает! Благодаря! –
Наследование может быть обоюдоострым мечом и часто с использованием композиции, такой как это лучшее и более гибкое решение –