Я хочу, чтобы мой игрок (персонаж) нашел узел, на котором он стоит

#c# #unity3d

#c# #unity3d

Вопрос:

Я хочу, чтобы мой игрок (персонаж) нашел узел, на котором он стоит. это мое изображение окна unity

FindingNode.cs

 using System;
 

использование UnityEngine;

общедоступный класс FindingNode : MonoBehaviour {

 void OnTriggerStay(Collider other)
{
    Action action = () =>
    {
        Debug.Log("vikas");
    };

    Action action1 = () =>
    {
        Debug.Log("Singh");

    };
    if (other.gameObject.name == "node(1)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(2)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(3)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(4)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(5)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(6)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(7)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(8)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(9)")
    {
        Popup popup = UIController.Instance.CreatePopup();
        popup.Init(UIController.Instance.MainCanvas, action, action1);
    }
    else if (other.gameObject.name == "node(10)")
  
    else
        Debug.Log("not working");
}
 

}

он показывает только «нерабочий» вывод в консоли. К узлам добавляется жесткое тело; это интерфейс игры «Монополия». если игрок может найти узел, то всплывающее окно отображается в соответствии с узлом.

Комментарии:

1. Во-первых, в именах ваших узлов, похоже, есть пробелы между node и скобкой. Во-вторых, вы могли бы отладить имя juat. Далее все действия узла тура кажутся одинаковыми. Последние. Изучите операторы переключения

2. У вас, очевидно, проблема с именованием. Но все вызовы одинаковы, поэтому, на чем бы вы ни стояли, он будет делать то же самое. Стоит упомянуть, что ваш метод collision может вызываться несколько раз и вызывать разные узлы при перекрытии двух или более. Это потому, что физика нуждается в проникновении, и это означает много точек попадания. Наконец, забудьте о совете switch, в вашем случае это не будет иметь никакого значения, кроме более длинного кода.

3. Пожалуйста, используйте правильные теги. [unityscript] есть или лучше был вариант JavaScript, подобный пользовательскому языку, который использовался в предыдущих версиях Unity и давно устарел ! Ваш код явно c# включен. Также это вообще не связано с VisualStudio

Ответ №1:

Я думаю, в этом случае вам следует использовать варианты переключения.

Код должен выглядеть примерно так:

 switch(other.gameObject.name) {
   case "node(1)":
     Popup popup = UIController.Instance.CreatePopup();
     popup.Init(UIController.Instance.MainCanvas, action, action1);
   break;

   case "node(2)":
      Popup popup = UIController.Instance.CreatePopup();
      popup.Init(UIController.Instance.MainCanvas, action, action1);
   break;
default:    
break;
}
 

…и так далее…

Я надеюсь, что это сработает для вас, удачи.

Комментарии:

1. Как переключатель имеет какое-либо значение? Почему тогда не словарь <строка, действие>?

2. Это не так, но, возможно, это сработало бы со случаями. Или вы можете попробовать с OnTriggerEnter помощью и установлен ли флажок триггера на узлах?