首页 > 解决方案 > 由脚本设置时,Unity UI 定位不在正确位置

问题描述

我正在开发一个关于 Unity 的小项目,我想要 UI 中按钮的随机生成位置。所以我做了这个脚本:

Animator anim;

void Start()
{
    anim = GetComponent<Animator>();
    transform.position = new Vector2(0, 0);
    randomspawn();
    
}


// Update is called once per frame
void Update()
{
    if(Input.GetMouseButtonDown(0))
    {
        anim.SetTrigger("Touch");
        Destroy(this.gameObject);
    }
}

private void randomspawn()
{
    transform.position = new Vector2(Random.Range(-125,125), Random.Range(-150, 150));
}

但按钮似乎附在左下角。这里什么都没有,没有锚,没有项目,什么都没有

见图片(按钮是白色圆圈): https ://imgur.com/a/1EC2EJ0

标签: c#unity3d

解决方案


我假设您的 Canvas 处于Screenspace Overlay模式。在这种情况下,坐标在屏幕像素空间中!

对于 UI0,0是左下角。您传递的值只是很小-> 非常接近左下角。

你可以使用例如

private void randomspawn()
{
    transform.position = new Vector2(Random.Range(0,Screen.width), Random.Range(0, Screen.height);
}

将其放置在屏幕上的任何位置。


推荐阅读