public void RefreshGlowRawImage() { if (!_glowRawImage) { Debug.LogError("此时glowRawImage不存在,不应该调用Refresh方法。"); return; } if (_rt) { _rt.Release(); } //开始创造RT ILayoutElement l = graphic as ILayoutElement; //多出20像素。 float rawImageWidth = l.preferredWidth + WidthMargin; _rt = UIGlowEffectCamera.Instance.CreateGlowRenderTexture( _mesh, graphic.mainTexture, rawImageWidth, DownSample, BlurIterations, Strength ); //设置图片 _glowRawImage.texture = _rt; _glowRawImage.color = GlowColor; float rtAspect = 1f * _rt.width / _rt.height; //设置raw image的大小。 _glowRawImage.rectTransform.sizeDelta = new Vector2(rawImageWidth, rawImageWidth / rtAspect); //如果这个是text,pivot不同,导致中心点不同,这里要加上mesh的bounds做一下偏移。 //UpOffset也要在这里应用。 _glowRawImage.rectTransform.position = graphic.rectTransform.position + _mesh.bounds.center + new Vector3(Offset.x, Offset.y, 0); if (!_glowRawImage.gameObject.activeSelf) { _glowRawImage.gameObject.SetActive(true); } //每次刷新glow image之后,重新设置follow组件,保证glow image的相对位置是正确的。 FollowTransform ct = _glowRawImage.gameObject.GetComponent <FollowTransform>(); if (!ct) { ct = _glowRawImage.gameObject.AddComponent <FollowTransform>(); } ct.SetFollowTarget(transform); ct.FollowPosition = true; ct.FollowRotation = true; ct.FollowLocalScale = true; }
private void Update() { if (otherTrigger.activeState) { return; } if (!activeState && !otherTrigger.activeState) { placementMode.Value = false; } //if (Mathf.Abs(transform.rotation.eulerAngles.z - prevAngle) / Time.deltaTime > speedThreshold) //{ // Debug.Log(Mathf.Abs(transform.rotation.eulerAngles.z - prevAngle) / Time.deltaTime); // activeState = !activeState; //} if (Mathf.Abs(transform.rotation.z - prevAngle) > speedThreshold) { Debug.Log(Mathf.Abs(transform.rotation.z - prevAngle)); activeState = !activeState; } prevAngle = transform.rotation.z; if (activeState != prevState) { prevState = activeState; triggerItem.SetActive(activeState); if (activeState) { ft.SetFollowTarget(uiPos); pp.SetPointerOrigin(otherTrigger.transform); placementMode.Value = true; } } }