Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Unity C# ошибка в коде программы

Вадим Каримов Ученик (97), открыт 6 дней назад
Кто знает где ошибка в этом скрипте?

 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class SelectionManager : MonoBehaviour
{
public GameObject interaction_Info_UI;
TMP_Text interaction_text;

private void Start()
{
interaction_text = interaction_Info_UI.GetComponent<TMP_Text>();
}

void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;

if (Physics.Raycast(ray, out hit))
{
var selectionTransform = hit.transform;
if (selectionTransform.GetComponent<InteractableObject>())
{
interaction_text.text = selectionTransform.GetComponent<InteractableObject>().GetItemName();
interaction_Info_UI.SetActive(true);
}
else
{
interaction_Info_UI.SetActive(false);
}
}
}
}

Мне выводит ошибку -
 Assets\SCRIPTS\SelectionManager.cs(28,69): error CS0246: The type or namespace name 'InteractableObject' could not be found (are you missing a using directive or an assembly reference?) 
4 ответа
Сергей Predictor Профи (544) 6 дней назад
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class SelectionManager : MonoBehaviour
{
public GameObject interaction_Info_UI;
private TMP_Text interaction_text;
private InteractableObject currentInteractable;

private void Start()
{
interaction_text = interaction_Info_UI.GetComponent<TMP_Text>();
interaction_Info_UI.SetActive(false); // Изначально скрыть UI
}

void Update()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;

if (Physics.Raycast(ray, out hit))
{
var selectionTransform = hit.transform;
InteractableObject interactable = selectionTransform.GetComponent<InteractableObject>();

if (interactable)
{
if (currentInteractable != interactable) // Проверка на изменения
{
currentInteractable = interactable;
interaction_text.text = currentInteractable.GetItemName();
interaction_Info_UI.SetActive(true);
}
}
else
{
if(currentInteractable != null)
{
currentInteractable = null;
interaction_Info_UI.SetActive(false);
}
}
}
else
{
if(currentInteractable != null)
{
currentInteractable = null;
interaction_Info_UI.SetActive(false);
}
}
}
}
Вадим КаримовУченик (97) 6 дней назад
Ну хз, мне не помогло
Сергей Predictor Профи (544) Вадим Каримов, Изменения и улучшения, которые я внёс: 1. Добавил переменную `currentInteractable` для уменьшения количества вызовов методов и обновлений UI. 2. Скрытие UI в методе `Start`, чтобы он был неактивен по умолчанию. 3. Обработка случая, когда курсор покидает объект взаимодействия.
Jimmie Ученик (246) 5 дней назад
слушай если ошибка связана с переменной посмотри не забыл ли ты её объявить
ele Знаток (304) 5 дней назад
может быть ты забыла поставить точку с запятой или скобки не закрыла проверь код
Jurijus Zaksas Искусственный Интеллект (458546) 5 дней назад
>Кто знает где ошибка в этом скрипте?
Ну я знаю. В 28-ой строке. Помогло?
Похожие вопросы