He visto algunos lugares donde Unity tiene la capacidad de "vincular" o requerir dependencias de componentes que se agregan (en el momento de la edición) y no se pueden eliminar hasta que se elimine el componente dependiente.
¿Hay alguna manera de usar este comportamiento desde scripts personalizados?
Sé que puede crear componentes en tiempo de ejecución usando ObjectFactory , pero es costoso y no resuelve el problema de poder modificar manualmente los parámetros en los componentes de dependencia.
Sí, el [RequireComponent(typeof(SomeDependencyComponent))] hace exactamente esto.
Por ejemplo:
[RequireComponent(typeof(AudioSync))] public class BehaviorPlayer : MonoBehaviour { private AudioSync audioSync; public void Start() { audioSync = GetComponent<AudioSync>(); } } Esto crea automáticamente un componente AudioSync (en este caso, un script personalizado en mi proyecto) que está garantizado que estará presente en el tiempo de ejecución, salvo que se eliminen mediante programación.
También aparece como un componente de edición en el objeto del juego que se puede modificar manualmente:
Además, si trato de eliminar el componente AudioSync requerido, Unity arroja un error: