Доступ к компоненту из другого скрипта - PullRequest
0 голосов
/ 01 апреля 2019

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

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

public class Destroyable : MonoBehaviour
{
    Outline myScript;
    private void OnMouseDown()
    {
        Destroy(gameObject);
    }

    // Start is called before the first frame update
    private void Start()
    {
        myScript = gameObject.GetComponent<Outline>();
    }

    // Update is called once per frame
    void Update()
    {

    }
}

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Если они находятся на том же объекте, что и

myScript = GetComponent<Outline>();

уже должен дать вам нужную ссылку.

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

myScript = transform.parent.GetComponent<Outline>();

или GetComponentInParent (только если компонент включен и GameObject активен при запуске)

myScript = GetComponentInParent<Outline>();

Еще лучше (если возможно) было бы сделать это [SerializeField]

[SerializeField] private Outline myScript;

и напрямую обратитесь к нему через Инспектора, чем вам вообще не нужно использовать GetComponent. Перетащите соответствующий элемент GameObject в поле, в котором он автоматически получает ссылку на соответствующий компонент.


Чтобы затем включить или отключить его, просто установите MonoBehaviour.enabled

myScript.enabled = true; // or false
0 голосов
/ 01 апреля 2019

Если это на вашем родительском объекте, то:

myScript = gameObject.transform.parent.gameObject.GetComponent<Outline>();

Другое хорошее решение (потому что производительность здесь не критична) от Hugo:

myScript = gameObject.GetComponentInParent<Outline()>;

Не в среде единства, но я думаю, что во втором случае gameObject является излишним.

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