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); }
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(); }