Gameobject (прожектор) не взаимодействует / не изменяется с холстом пользовательского интерфейса textField - PullRequest
0 голосов
/ 12 февраля 2019

Gameobject (прожектор) не отвечает с помощью пользовательского интерфейса (текст)

Мое намерение - извлечь значение из firebase с помощью rest api и мигать светом в соответствии со значениями, проблема здесь в том, что он выбираетЗначения очень правильные, но я не могу взаимодействовать с игровым объектом

, например:

Под значением firebase: 75 (пара ключ-значение)

он выбирается правильно, но в соответствии со значениямицвет не меняется

using UnityEngine;
using UnityEngine.UI;
using Proyecto26;

public class valuesRetrieve : MonoBehaviour
{
    int l;
    Color color0 = Color.red;
    Color color1 = Color.green;

    Light lt;

    public Text displayName;
    public InputField nameText;
    public static string name;

    public Text valueText;
    public static int store_values;

    User user = new User();

    void Start()
    {
        onSubmit();

        //l = liver(l);
        //lt = GetComponent<Light>();
    }

    public void onSubmit()
    {
        RetrieveFromDatabase();
    }

    private void RetrieveFromDatabase()
    {
        RestClient.Get<User>("https://feelsmart-******.firebaseio.com/" + nameText.text + ".json").Then(response =>
        {
            user = response;

            UpdateValues();
        });
    }

    public void UpdateValues()
    {
        valueText.text = "store value is " + user.StoreValues;

        lt = GetComponent<Light>();
        //user.StoreValues = 75;
        if (user.StoreValues < 72 || user.StoreValues > 80)
        {
            lt.color = color0;
        }
        else
        {
            lt.color = color1;
        }
 }

Я ожидаю, что цвет изменится

screenshot of my object scenes

1 Ответ

0 голосов
/ 12 февраля 2019

Вы получаете MissingComponentException:

К игровому объекту "GameObject" не прикреплено "Light", но скрипт пытается получить к нему доступ.

lt = GetComponent<Light>();

пытается получить компонент Light из того же GameObject, к которому присоединен скрипт.


В случае, если вы хотите изменить только первого найденного потомкаLight Вы должны использовать GetComponentInChildren<Type>()

// GetComponentInChildren by default only finds active and enabled components
// -> use true if you want to also get components if they are disabled
// or the GameObject inactive
light = GetComponentInChildren<Light>();

light.color = (user.StoreValues < 72 || user.StoreValues > 80) ? color0 : color1;

Или, если вы хотите изменить все Light s для этого объекта, вы должны использовать GetComponentsInChildren<Type>() (помните s) и перебирайте их

// GetComponentsInChildren by default only finds active and enabled components
// -> use true if you want to also get components if they are disabled
// or the GameObject inactive
lights = GetComponentsInChildren<Light>(true);
foreach(var light in lights)
{
    light.color = (user.StoreValues < 72 || user.StoreValues > 80) ? color0 : color1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...