Общедоступная переменная unity не отображается с gameobject.find

У меня есть сценарий под названием 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;
    }

он просто не может найти эту одну переменную, в то время как все остальные общедоступные видны

В чем проблема? Вы получаете ошибку времени выполнения или значение, которого не ожидаете?

Andrea 31.10.2018 13:39

привет, это не позволяет мне ссылаться на переменную deathCount, говоря, что EnemyHealth не содержит определения для deathCount, когда он фактически объявлен, но я просто не могу ссылаться на него

PaPaB1nG0 31.10.2018 13:44

в коде не отображается красная линия под графом смерти, потому что он просто вставлен

PaPaB1nG0 31.10.2018 13:45

Хорошо, похоже, проблема связана с пространством имен, определенным для EnemyHealth. Я пытался дать ответ, дайте мне знать, поможет ли это.

Andrea 31.10.2018 13:53

Вы сохранили все файлы?

Thomas Hilbert 31.10.2018 13:59

войдите в свой ide и нажмите "Сохранить все". с этой переменной все в порядке, иногда я делаю это, когда редактирую два сценария и сохраняю один, затем мне нужно вернуться и сохранить другой. стоит выстрел.

Technivorous 31.10.2018 14:00

спасибо за комментарии, ребята, ответ Андреаса исправил

PaPaB1nG0 31.10.2018 14:15
1
7
327
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Класс EnemyHealth находится внутри пространства имен CompleteProject: вы должны добавить

using CompleteProject 

в верхней части сценария DatabaseManager, чтобы видеть это пространство имен.

Или поместите пространство имен перед именем класса: int x = GameObject.Find("ZomBear").GetComponent<CompleteProject.Enem‌​yHealth>().deathCoun‌​t;. Название этого вопроса вводит в заблуждение. Использование исходит от GetComponent, а не от GameObject.Find.

Programmer 31.10.2018 14:00

@Programmer: спасибо за комментарий: абсолютно согласен по обоим пунктам.

Andrea 31.10.2018 14:10

спасибо за ответ Андреа, это сработало, очень признателен

PaPaB1nG0 31.10.2018 14:14

В вашей IDE нажмите "Сохранить все". убедитесь, что при редактировании нескольких сценариев вы сохраняете новую версию всех задействованных сценариев. звучит просто, но я проделывал это сотни раз, и обычно требуется всего секунда, чтобы осознать это.

Другие вопросы по теме