Переменная Unity C # не назначена - PullRequest
0 голосов
/ 10 декабря 2018

Это на самом деле довольно забавно.У меня есть два текстовых интерфейса в моем проекте.Оба на холсте.Они называются text1 и text 2. Я сделал то же самое для обоих в сценарии.text1 в порядке, но текст 2, похоже, не назначен, так как ошибка единицы говорит: «UnassignedReferenceExeption: переменная text2 larrytalk не была назначена.»

Вот мой код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;

public class larrytalk : MonoBehaviour
{
[SerializeField] private GameObject FPS;
[SerializeField] public GameObject text1;
[SerializeField] public GameObject text2;
[SerializeField] private GameObject Larry;
[SerializeField] private GameObject Turm;
[SerializeField] private GameObject sockel;
CharacterController cc;

bool hold;



// Use this for initialization
void Start()
{
    cc = GetComponent<CharacterController>();
    GameObject Larry = GameObject.Find("larry1");
    GameObject Text1 = GameObject.Find("Text1");
    GameObject Text2 = GameObject.Find("Text2");
    GameObject charactercontroller = GameObject.Find("FPSController");
    GameObject Turm = GameObject.Find("mpp u3");
    GameObject sockel = GameObject.Find("beton");

    text1.SetActive(false);
    text2.SetActive(false);


}

// Update is called once per frame
void Update()
{

    if (Input.GetMouseButtonDown(0) && Input.GetMouseButton(0) && cc.height < 20 && Vector3.Distance(Larry.transform.position, this.transform.position) < 10)
    {
            text1.SetActive(true);
    }

   if( Vector3.Distance(Larry.transform.position, this.transform.position) > 20)
    {
        text1.SetActive(false);
    }
   if (Input.GetMouseButtonDown(0) && Input.GetMouseButton(0) && cc.height < 20 && Vector3.Distance(sockel.transform.position, Turm.transform.position) <10)
    {
        text2.SetActive(true);
    }
    else
    {
        text2.SetActive(false);
    }
}
}

все что связано с text1 работает нормально.Почему не text2, а?

1 Ответ

0 голосов
/ 10 декабря 2018

Ваша проблема в том, что вы объявляете новые переменные в вашем методе start и НЕ назначаете те, которые вы объявили в верхней части вашего скрипта.Измените

GameObject Text2 = GameObject.Find("Text2");

на

text2 = GameObject.Find("Text2");

И сделайте то же самое для других полей.

Что касается того, почему text1 не выдает ошибку, она, вероятно, назначенав инспекторе и тексте нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...