@GmDvlpr

Текст не вставляется в окно для текста у объекта unity, что делать?

Я создаю игру, в которой появляется объект и игрок должен нажать на него, после чего объект удаляется и в score прибавляется очко.Но тут начались проблемы, сначала юнити уничтожал не экземпляр, а сам префаб, тогда я решил просто создать 2 скрипта, в первом написал спавн объекта, во втором -уничтожение,2 скрипт я привязал на сам префаб, и тут начинается 2 проблема - текст из иерархии не хочет вставлятся в окно для текста5e1468818f2c9168898766.png
Но если я вставлю скрипт с уничтожением в камеру или еще куда, то все нормально, но прикол в том, что если я поставлю на камеру, то ничего не нажимается, а если я поставлю на Controller, который я сделал из 3д куба и убрал оттуда mesh renderer, то по нажатию в любую точку экрана объект будет удалятся, но мне надо, чтоб объект уничтожался по нажатию по самому объекту, а не на любой точке.

В инете я такое не нашел, вот все как у меня работает
5e1469831aec8296566132.png
тут код со спавном объектов
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Hitenemy : MonoBehaviour
{
    public GameObject man;
    GameObject enemy;
    void Start()
    {
        StartCoroutine(Spawn());
    }

    
    void Update()
    {
        
    }

    IEnumerator Spawn()
    {
        while (true)
        {
            man.transform.position = new Vector2(Random.Range(-2.21f, 2.195f), Random.Range(-4.354f, 2.498f));
           enemy= Instantiate(man);
            yield return new WaitForSeconds(1.5f);

            //   Destroy(enemy);
            // yield return new WaitForSeconds(1.5f);
        }
    }
    
}


а тут с уничтожением
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Destroyenem : MonoBehaviour
{
    
    public Text score;
    private int count = 0;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    private void OnMouseDown()
    {
        count++;
        score.text = count.ToString();
        Destroy(gameObject);
      
    }
}


мне кажется, что у меня костыли какие-то получаются, но как говориться:"Если работает-не трогай"
хотя я новичек
прошу помощи.
  • Вопрос задан
  • 1326 просмотров
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos Куратор тега Unity
2 скрипт я привязал на сам префаб, и тут начинается 2 проблема - текст из иерархии не хочет вставлятся в окно для текста

Вы ПРЕФАБУ пытаетесь скормить объект, не принадлежащий этому префабу?
1) Не надо так
2) Я бы на месте юнити тоже не позволял так делать
3) Если вы это делаете в режиме редактирования префаба ИЛИ НЕ инстансу префаба уже лежащему на сцене - то и не должно так работать.

Про нажатие:
OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider.
Коллайдер на том объекте, на котором висит скрипт УДАЛЕНИЯ, есть?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы