private void ShowGarbageTriggerEffect(bool value, Vector3 position, Action animOverCallback)
        {
            AnimationOnce effect = value ? _rightBinEffect : _wrongBinEffect;

            effect.gameObject.SetActive(true);
            effect.transform.position = position;
            if (animOverCallback != null)
            {
                effect.animationOver += animOverCallback;
            }
        }
        private void Awake()
        {
            transform.Find("AirBarrier/Tilemap").GetComponent <Tilemap>().color = Color.clear;

            _player = transform.Find("Player/Character").gameObject.AddComponent <Player>();

            Transform garbageRootTrans = transform.Find("Garbage");
            int       count            = garbageRootTrans.childCount;

            _garbageArray = new Garbage[count];
            ConfGarbage[] confList   = ConfGarbage.Array;
            int           confLength = confList.Length;

            if (confLength == 0)
            {
                return;
            }
            for (int i = 0; i < count; i++)
            {
                Garbage garbage     = garbageRootTrans.GetChild(i).gameObject.AddComponent <Garbage>();
                int     randomIndex = UnityEngine.Random.Range(0, confLength);
                garbage.Conf     = confList[randomIndex];
                _garbageArray[i] = garbage;
            }

            _rightBinEffect = transform.Find("Effects/RightBin").GetComponent <AnimationOnce>();
            _wrongBinEffect = transform.Find("Effects/WrongBin").GetComponent <AnimationOnce>();

            if (Camera.main != null)
            {
                Camera.main.gameObject.AddComponent <CameraController>();
            }

            UIFacade.HideUIAll?.Invoke();
            UIFacade.ShowUI?.Invoke(UIDef.LEVEL_MAIN);

            SceneFacade.IsAllGarbageCollected += IsAllGarbageCollected;
            SceneFacade.OnGarbageDestroy      += OnGarbageDestroy;
        }