Exemple #1
0
        public static MessagePopup <M> TryCreate(string asset_)
        {
            var key = "MessagePopup.Create";

            Performance.RecordProfiler(key);
            MessagePopup <M> ret;

            try {
                var obj   = AssetMapping.View.TakePersistent <GameObject>(asset_);
                var trans = obj.transform;
                trans.SetParent(ViewEnv.CanvasOverlay, false);
                RectTransform content = trans.FindChecked <RectTransform>(nameof(content));
                var           message = new M();
                message.Init(content.gameObject);
                ButtonReceiver confirm    = content.FindChecked <ButtonReceiver>(nameof(confirm));
                ButtonReceiver cancel     = content.TryFind <ButtonReceiver>(nameof(cancel));
                ButtonReceiver block      = trans.FindChecked <ButtonReceiver>(nameof(block));
                var            confirmPos = confirm.transform.localPosition;
                ret = new MessagePopup <M>()
                {
                    _obj             = obj,
                    _content         = content,
                    _defaultPosition = content.anchoredPosition,
                    _message         = message,
                    _confirm         = confirm,
                    _cancel          = cancel,
                    _positionBoth    = confirmPos,
                    _positionSingle  = confirmPos,
                };
                confirm.WhenClick = b => {
                    ret._OnConfirm?.Invoke();
                    ret.Clear();
                };
                if (cancel != null)
                {
                    cancel.WhenClick = b => {
                        ret._OnCancel?.Invoke();
                        ret.Clear();
                    };
                    ret._positionSingle = (confirmPos + cancel.transform.localPosition) * 0.5f;
                }
                block.WhenClick = b => {
                    if (ret._option.blockIsCancel)
                    {
                        ret._OnCancel?.Invoke();
                        ret.Clear();
                    }
                };
                obj.SetActive(false);
            }
            catch (Exception e) {
                Log.Warning($"{nameof(MessagePopup<M>)} create failed. {e.Message}");
                ret = null;
            }
            Performance.End(key);
            return(ret);
        }
Exemple #2
0
        public static void Display()
        {
            // (1) - events
            // Events enable a class or object to notify other classes or objects
            // when something of interest occurs.
            // The class that sends (or raises) the event is called the publisher and
            // the classes that receive (or handle) the event are called subscribers.
            exampleEvent += Method01;
            exampleEvent += Method02;
            exampleEvent += Method03;

            exampleEvent.Invoke();


            // In a typical C# Windows Forms or Web application,
            // you subscribe to events raised by controls such as buttons and list boxes.
            Button         button         = new Button();
            ButtonReceiver buttonReceiver = new ButtonReceiver();

            buttonReceiver.Subscribe(button);
            button.Pressed();
        }