Vector2 screenPos = UICamera.WorldToScreenPoint(rect.position);
var x = (int)(screenPos.x - rect.sizeDelta.x/2);
var y = (int)(Screen.height - screenPos.y- rect.sizeDelta.y/ 2);
var width = (int)(rect.sizeDelta.x);
var height = (int)(rect.sizeDelta.y);
自己测试了一下,CreateUserInfoButton()传入的坐标应该是基于物理屏幕像素,在Unity中如果想在游戏中某个按钮位置覆盖一个这个按钮,坐标转换如下(本转换基于Button的pivot为(0.5,0.5)):
Vector2 screenPos = UICamera.WorldToScreenPoint(rect.position); var x = (int)(screenPos.x - rect.sizeDelta.x/2); var y = (int)(Screen.height - screenPos.y- rect.sizeDelta.y/ 2); var width = (int)(rect.sizeDelta.x); var height = (int)(rect.sizeDelta.y);