Unity中UI GameObject无法移动至指定位置的问题排查
问题描述
我想用脚本实现简洁的转场动画,于是创建了两个UI Image组件,目前动画功能正常,但图像始终固定在左下角。试过Unity各类移动函数(除了MoveTowards,不想用内置动画),还是没法解决。
相关代码
using System.Collections; using UnityEditor; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.UI; public class SceneController : MonoBehaviour { public SceneAsset scene; public Sprite maskSprite; public Material maskMaterial; public Material backgroundMaterial; private float time; private void Start() { StartCoroutine("AnimationController"); } private Image createMesch(string name, Material material) { GameObject child = new GameObject(name); child.transform.SetParent(gameObject.transform); Image childMaterial = child.AddComponent<Image>(); childMaterial.material = material; // 从网上复制的代码,本应让锚点和枢轴居中 childMaterial.rectTransform.anchorMin = new Vector2(0.5f, 0.5f); childMaterial.rectTransform.anchorMax = new Vector2(0.5f, 0.5f); childMaterial.rectTransform.pivot = new Vector2(0.5f, 0.5f); return childMaterial; } private IEnumerator AnimationController() { Image mask = createMesch("Transition_Mask", backgroundMaterial); mask.sprite = maskSprite; Image background = createMesch("Transition_Background", maskMaterial); // 无效 background.rectTransform.position = Vector3.zero; Vector2 screenSize = new Vector2(Screen.width, Screen.height); print(background.rectTransform.position); background.rectTransform.sizeDelta = screenSize; background.color = Color.black; float maskSize = Mathf.Sqrt(Mathf.Pow(Screen.width, 2) + Mathf.Pow(Screen.height, 2)); Vector2 targetSize = new Vector2(maskSize, maskSize); while (time < 1) { mask.rectTransform.sizeDelta = Vector2.Lerp(targetSize, Vector3.zero, time); yield return null; time += Time.deltaTime / 0.8f; } yield return new WaitForSeconds(2); time = 0; while (time < 1) { mask.rectTransform.sizeDelta = Vector2.Lerp(Vector2.zero, targetSize, time); yield return null; time += Time.deltaTime / 0.8f; } } private void OnTriggerEnter(Collider other) { SceneManager.LoadScene(scene.name); } }
当前显示效果

内容的提问来源于stack exchange,提问作者Benjamin Cisek
相关产品推荐
相关产品推荐

