c# - 由脚本设置时,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
解决方案
我假设您的 Canvas 处于Screenspace Overlay
模式。在这种情况下,坐标在屏幕像素空间中!
对于 UI0,0
是左下角。您传递的值只是很小-> 非常接近左下角。
你可以使用例如
private void randomspawn()
{
transform.position = new Vector2(Random.Range(0,Screen.width), Random.Range(0, Screen.height);
}
将其放置在屏幕上的任何位置。
推荐阅读
- javascript - Can't figure out how to use MongoDB's $bitsAnySet operator
- c - 使用C从.raw文件中恢复JPEG图像
- javascript - 我正在制作的这个 React 待办事项应用程序中缺少什么?
- python - 在一组补丁周围画一个周长?
- javascript - 在 webpack 和 bootstrap 4 中包含自定义字体类型不起作用
- python - 添加具有位于某些其他列中任何位置的条件值的列
- html - 我页面右侧的奇怪空白区域 - CSS
- ios - 如何使用 MTLSamplerState 而不是在我的片段着色器代码中声明采样器?
- parallel-processing - 我无法让 pool.map 或 pool.starmap 以我认为应该的方式工作
- c - PIC16F887 接收到错误的 UART 数据