Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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>();
        }
Exemplo n.º 4
0
        private UIPopContainer _CreateContainer(string path)
        {
            GameObject popObject = UnityUtils.AddChild(popCanvas.gameObject);

            popObject.name = path;
            return(popObject.AddComponent <UIPopContainer>());
        }
Exemplo n.º 5
0
        ///
        /// 只有当消息的接受者不存在的时候,才会去考虑创建消息的接受者
        /// 创建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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 public GameObject AddChild(GameObject prefab)
 {
     child      = UnityUtils.AddChild(gameObject, prefab);
     child.name = "Prefab";
     return(child);
 }
Exemplo n.º 8
0
        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);
            }
        }