Unity: запуск скрипта на другом объекте в start () - PullRequest
0 голосов
/ 12 июня 2018

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

public GameObject player_prefab;
Start(){
  GameObject playerUnit =  GameObject.Instantiate(player_prefab,PlayerPoss,player_prefab.transform.rotation);
  squadEvents squadScript = (squadEvents)playerUnit.GetComponent(typeof(squadEvents));
  squadScript.ShowWalkRange();}

Копаться в Интернете говорит мне, что моя проблема в том, что я пытаюсь получить доступ к скрипту во время запуска, но не могу найтипричина, почему или придумать обходной путь, спасибо за любую помощь по этим вопросам

1 Ответ

0 голосов
/ 12 июня 2018

Стоит отметить, что метод Start () объекта с установленным именем вызывается только перед первым вызовом метода Update ().Если вы выполняете какую-либо инициализацию в методе Start () другого объекта, вы можете переместить это в метод Awake ().

Возможно, вы на самом деле не нашли компонент правильно?Если вы используете GetComponentInChildren, вы будете искать компонент для этого объекта или любого из дочерних объектов префабов.

private void Start()
{
  GameObject playerUnit =  GameObject.Instantiate(player_prefab,PlayerPoss,player_prefab.transform.rotation);
  squadEvents squadScript = playerUnit.GetComponentInChildren<squadEvents>();
  if ( squadScript == null )
  {
    Debug.Log("Could not get <squadEvents> component in this GameObject or any of its children.");
    return;
  }
  squadScript.ShowWalkRange();
}

Вот ссылка Unity для GetComponentInChildren ().

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