public void OnBeginDrag(PointerEventData eventData) { Canvas canvas = UnityUtils.FindInParent <Canvas>(gameObject); if (canvas != null) { GameObject draggingGameObject = UnityUtils.AddChild(canvas.gameObject); draggingGameObject.name = gameObject.name; draggingGameObject.transform.SetAsLastSibling(); Image image = draggingGameObject.AddComponent <Image>(); image.raycastTarget = false; image.sprite = _draggableImage.sprite; image.SetNativeSize(); _draggingRectTransform = draggingGameObject.GetComponent <RectTransform>(); if (dragOnSurfaces) { _draggingPlane = transform as RectTransform; } else { _draggingPlane = canvas.transform as RectTransform; } OnDrag(eventData); onBeginDrag.Call(draggingGameObject); } }
private void Awake() { RectTransform containerRect = gameObject.AddComponent <RectTransform>(); containerRect.pivot = new Vector2(0.5f, 0.5f); containerRect.anchorMin = Vector2.zero; containerRect.anchorMax = Vector2.one; containerRect.offsetMin = Vector2.zero; containerRect.offsetMax = Vector2.zero; GameObject maskObject = UnityUtils.AddChild(gameObject); maskObject.name = "Mask"; RectTransform maskRect = maskObject.AddComponent <RectTransform>(); maskRect.pivot = new Vector2(0.5f, 0.5f); maskRect.anchorMin = Vector2.zero; maskRect.anchorMax = Vector2.one; maskRect.offsetMin = Vector2.zero; maskRect.offsetMax = Vector2.zero; mask = maskObject.AddComponent <RawImage>(); mask.color = ColorUtils.TransparentColor; mask.raycastTarget = true; EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerClick; entry.callback.AddListener(OnMaskPointerClick); EventTrigger eventTrigger = maskObject.AddComponent <EventTrigger>(); eventTrigger.triggers.Add(entry); }
private void Awake() { GameObject cameraObject = new GameObject("UIPopCamera"); DontDestroyOnLoad(cameraObject); UnityUtils.SetLayer(cameraObject, LayerMask.NameToLayer(LayerName)); popCamera = cameraObject.AddComponent <Camera>(); popCamera.cullingMask &= 1 << LayerMask.NameToLayer(LayerName); popCamera.clearFlags = CameraClearFlags.Depth; popCamera.orthographic = true; popCamera.depth = LayerDepth; cameraObject.AddComponent <FlareLayer>(); cameraObject.AddComponent <GUILayer>(); GameObject canvasObject = UnityUtils.AddChild(cameraObject); canvasObject.name = "Canvas"; popCanvas = canvasObject.AddComponent <Canvas>(); popCanvas.renderMode = RenderMode.ScreenSpaceOverlay; popCanvas.worldCamera = popCamera; popCanvas.sortingOrder = CanvasOrder; CanvasScaler canvasScaler = canvasObject.AddComponent <CanvasScaler>(); canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = FrameworkConfig.UI.ScalerResolution; canvasScaler.matchWidthOrHeight = FrameworkConfig.UI.MatchWidthOrHeight; canvasObject.AddComponent <GraphicRaycaster>(); }
private UIPopContainer _CreateContainer(string path) { GameObject popObject = UnityUtils.AddChild(popCanvas.gameObject); popObject.name = path; return(popObject.AddComponent <UIPopContainer>()); }
/// /// 只有当消息的接受者不存在的时候,才会去考虑创建消息的接受者 /// 创建Controller /// void createController(int senderID, LogicalType receiver, MsgParam param) { string name = receiver.ToString(); GameObject go = new GameObject(name); go.AddComponent(binder.getController(name)); UnityUtils.AddChild(go, ControllerMain.CtrlMain.gameObject); ControllerEx ctrlEx = go.GetComponent <ControllerEx>(); ctrlEx.CtrlType = receiver; AsyncTask.QueueOnMainThread(() => { param.Sender = senderID; param.Receiver = go.GetInstanceID(); ctrlEx.UI_OnReceive(param); }, 1f); }
Image AddSprite(Transform spritesContainer, Sprite letterSprite, int horDock, int spriteIndex) { GameObject letterObject = null; Image image = null; if (spriteIndex < spritesContainer.childCount) { letterObject = spritesContainer.GetChild(spriteIndex).gameObject; image = letterObject.GetComponent <Image>(); } else { letterObject = UnityUtils.AddChild(spritesContainer.gameObject, null); letterObject.name = "Letter"; image = letterObject.AddComponent <Image>(); } image.sprite = letterSprite; image.color = fontColor; image.SetNativeSize(); letterObject.transform.localPosition = new Vector3(horDock + (int)image.preferredWidth / 2, spriteIndex * veticalPadding, 0); return(image); }
public GameObject AddChild(GameObject prefab) { child = UnityUtils.AddChild(gameObject, prefab); child.name = "Prefab"; return(child); }
protected override void UpdateView() { Transform spritesContainer = null; if (transform.childCount == 0) { UnityUtils.AddChild(gameObject, null); } spritesContainer = transform.GetChild(0); spritesContainer.name = "SpritesContainer"; // default left align int currentHorDock = 0; int currentTotalWidth = 0; int spriteHeight = 0; int spriteAddIdx = 0; for (int i = 0; i < mText.Length; i++) { if (_charSpriteDic.ContainsKey(mText[i])) { Image image = AddSprite(spritesContainer, _charSpriteDic[mText[i]], currentHorDock, spriteAddIdx++); spriteHeight = Math.Max(spriteHeight, (int)image.preferredHeight); currentHorDock += ((int)image.preferredWidth + padding); } } if (Application.isPlaying) { UnityUtils.RemoveAllChildrenFrom(spritesContainer.gameObject, false, spriteAddIdx); } else { UnityUtils.RemoveAllChildrenFrom(spritesContainer.gameObject, true, spriteAddIdx); } currentTotalWidth = currentHorDock - padding; float scaleFact = 1; int calWidth = 0; if (fontHeight > 0 && spriteHeight > 0) { scaleFact = fontHeight / (float)spriteHeight; calWidth = (int)(scaleFact * currentTotalWidth); } else { scaleFact = 1.0f; calWidth = currentTotalWidth; } if (maxWidth > 0 && calWidth > maxWidth) { scaleFact = (float)maxWidth / currentTotalWidth; } spritesContainer.localScale = new Vector3(scaleFact, scaleFact, scaleFact); // text alignment if (textAlign == TextAlign.RIGHT) { spritesContainer.localPosition = new Vector3(-currentTotalWidth * scaleFact, 0, 0); } else if (textAlign == TextAlign.CENTER) { spritesContainer.localPosition = new Vector3(-currentTotalWidth / 2 * scaleFact, 0, 0); } else if (textAlign == TextAlign.LEFT) { spritesContainer.localPosition = new Vector3(0, 0, 0); } }