У меня есть сценарий под названием EnemyHealth и сценарий под названием DatabaseManager. в сценарии DatabaseManager я пытаюсь сослаться на недавно созданную общедоступную переменную int deathCount из сценария EnenmyHealth, но эта общедоступная переменная не отображается для меня, в то время как все остальные, вот код
ВрагЗдоровье
using UnityEngine;
namespace CompleteProject
{
public class EnemyHealth : MonoBehaviour
{
public int startingHealth = 100; // The amount of health the enemy starts the game with.
public bool isDead; // Whether the enemy is dead.
public int deathCount;
public int currentHealth; // The current health the enemy has.
public float sinkSpeed = 2.5f; // The speed at which the enemy sinks through the floor when dead.
public int scoreValue = 10; // The amount added to the player's score when the enemy dies.
public AudioClip deathClip; // The sound to play when the enemy dies.
DatabaseManager
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class DatabaseManager: MonoBehaviour
{
private void Awake()
{
int x = GameObject.Find("ZomBear").GetComponent<EnemyHealth>().deathCount;
}
он просто не может найти эту одну переменную, в то время как все остальные общедоступные видны
привет, это не позволяет мне ссылаться на переменную deathCount, говоря, что EnemyHealth не содержит определения для deathCount, когда он фактически объявлен, но я просто не могу ссылаться на него
в коде не отображается красная линия под графом смерти, потому что он просто вставлен
Хорошо, похоже, проблема связана с пространством имен, определенным для EnemyHealth. Я пытался дать ответ, дайте мне знать, поможет ли это.
Вы сохранили все файлы?
войдите в свой ide и нажмите "Сохранить все". с этой переменной все в порядке, иногда я делаю это, когда редактирую два сценария и сохраняю один, затем мне нужно вернуться и сохранить другой. стоит выстрел.
спасибо за комментарии, ребята, ответ Андреаса исправил
Класс EnemyHealth
находится внутри пространства имен CompleteProject
: вы должны добавить
using CompleteProject
в верхней части сценария DatabaseManager
, чтобы видеть это пространство имен.
Или поместите пространство имен перед именем класса: int x = GameObject.Find("ZomBear").GetComponent<CompleteProject.EnemyHealth>().deathCount;
. Название этого вопроса вводит в заблуждение. Использование исходит от GetComponent
, а не от GameObject.Find
.
@Programmer: спасибо за комментарий: абсолютно согласен по обоим пунктам.
спасибо за ответ Андреа, это сработало, очень признателен
В вашей IDE нажмите "Сохранить все". убедитесь, что при редактировании нескольких сценариев вы сохраняете новую версию всех задействованных сценариев. звучит просто, но я проделывал это сотни раз, и обычно требуется всего секунда, чтобы осознать это.
В чем проблема? Вы получаете ошибку времени выполнения или значение, которого не ожидаете?