(Unity) Добавление скрипта в игровой объект при смене маски слоя - PullRequest
0 голосов
/ 25 февраля 2019

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

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

Заранее спасибо.

1 Ответ

0 голосов
/ 25 февраля 2019

Не думаю, что для этого есть что-то встроенное, но вы можете использовать GameObject.layer , сохранить его и сравнить.

Используя [ExecuteInEditMode] вы можете заставить компонент выполнять некоторые методы также в редакторе:

[ExecuteInEditMode]
public class LayerChecker : MonoBehaviour
{
    private int lastLayer;

    // could e.g be a UnityEvent (like onClick of buttons)
    public UnityEvent OnLayerChanged;

    private void Update()
    {
        // if layer didn't change do nothing
        if(lastLayer == gameObject.layer) return;

        // changed! -> what ever you want to happen 
        // e.g. invoke the event or call another method
        OnLayerChanged.Invoke();

        // store the new layer
        lastLayer = gameObject.layer;
    }    
}

, если вы хотите ограничить, где это происходит, вы можете также проверить Application.isEditor и/ или Application.isPlaying

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