Unity3D: как вызвать функцию в одном скрипте из другого скрипта, который прикреплен к префабу? - PullRequest
0 голосов
/ 12 июня 2018

У меня есть объект A и prefab B. К каждому приложенному скрипту "ScriptA" и "ScriptB".В «ScriptA» мне нужна функция вызова из «ScriptB».Я попробовал это (код C #):

public ScriptB MyScript;
MyScript.function();

Но я не могу прикрепить объект A к публичной переменной «MyScript», я просто вижу значок перечеркнутого круга.В чем проблема?

Ответы [ 2 ]

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

как вызвать функцию в одном скрипте из другого скрипта, который подключен к префабу?

Вы не можете сделать это напрямую, потому что это префаб.Чтобы получить доступ к сценарию, прикрепленному к префабу, создайте его экземпляр, затем используйте GetComponent, чтобы получить скрипт.

//Assign the prefab from the Editor
public GameObject prefab;
public ScriptB MyScript;

void Start()
{
    //Instantiate prefab 
    GameObject obj = Instantiate(prefab);

    //Get script attached to it
    MyScript = obj.GetComponent<ScriptB>();

    //Call the function
    MyScript.function();
}

Если ScriptB уже присоединен к GameObject в сцене (см.на вкладке Иерархия), то вам не нужно создавать его экземпляр.Просто найдите GameObject и затем используйте GetComponent, чтобы присоединить к нему скрипт.

ScriptB MyScript;

void Start()
{
    //Find the GameObject
    GameObject obj = GameObject.Find("NameOfGameObjectScriptBIsAttachedTo");

    //Get script attached to it
    MyScript = obj.GetComponent<ScriptB>();

    //Call the function
    MyScript.function();
}
0 голосов
/ 12 июня 2018

Если вы используете публичный игровой объект, вы можете обратиться к сценарию.Затем вы можете обратиться к функции в сценарии.

//This would be in script A

public gameObject objectB;

void Start () {
  objectB.functionB();
}

Просто убедитесь, что ваша функция public void.

//This would be in script B

public void functionB () {
  //Do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...