using System.Collections.Generic; using UnityEngine; namespace Convention { [RequireComponent(typeof(Camera))] public class CameraInitializer : MonoBehaviour { [Setting, SerializeField] private List Configs = new(); public void InitializeImmediate() { var camera = GetComponent(); foreach (var config in Configs) { config.Invoke(camera); } DestroyImmediate(this); } private void Awake() { InitializeImmediate(); } public static void InitializeImmediate(GameObject target) { if (target.GetComponents().Length != 0) { foreach(var initer in target.GetComponents()) initer.InitializeImmediate(); } } } namespace SO { public abstract class CameraInitializerConfig : ScriptableObject { public abstract void Invoke(Camera camera); } } }