TMPro Unnasigned в игре, проблема обнаружена, не знаю, как решить - PullRequest
0 голосов
/ 03 февраля 2020

Я пишу этот код для управления сгенерированными планетами. Код прикреплен к сборному, который генерируется случайным образом. Префаб имеет несколько текстов пользовательского интерфейса. Я пытаюсь получить доступ к каждому из них в отдельности в отношении сборного ... не только через осмотреть. Когда я просто перетаскиваю его в инспектор, он не переносится для каждого клона. Как я могу указать указанный c текст пользовательского интерфейса в моем префабе, чтобы он переносился для клонов?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class planetManagerV1 : MonoBehaviour
{
        public Texture2D[] planet_textures;
        public int max_nuetral_hp;
        private int starting_nuetral_hp;
        public TextMeshProUGUI dyamicHPtxt;
        public TextMeshProUGUI HPtxt;

    // Start is called before the first frame update
    void Start()
    {   
        //Choose Random texture
        GetComponent<Renderer>().material.mainTexture = planet_textures[Random.Range(0, planet_textures.Length)];
        //Set Nuetral Planet Tag
        dynamicHPtxt = GetComponent<TextMeshProUGUI>();
        HPtxt = GetComponent<TextMeshProUGUI>();
        starting_nuetral_hp = Random.Range(1, max_nuetral_hp);
        //Set Texts
        dynamicHPtxt.text = starting_nuetral_hp.ToString();
        HPtxt.text = "uh oh";
    }

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

    }
}

Вся помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

В вашем Start у вас есть

dynamicHPtxt = GetComponent<TextMeshProUGUI>();
HPtxt = GetComponent<TextMeshProUGUI>();

Это может

  • a), если в том же GameObject такого компонента нет поскольку этот сценарий перезаписывает ссылки на null, и поэтому они не назначаются в клонах
  • b) Оба вызова фактически возвращают одну и ту же ссылку: первый встреченный компонент TMP в том же GameObject, что и этот сценарий или null, если ничего не было найдено.

Если, как вы говорите, вы уже настроили и правильно ссылаетесь на обе вещи в префабе, то полностью избавьтесь от этих двух GetComponent вызовов!

0 голосов
/ 03 февраля 2020

Вы пробовали обновить ваш префаб? Вы должны иметь возможность связать их через инспектора, а затем нажать «Переопределить» и применить все (верхний правый угол инспектора).

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