我想在我触摸照片的时候创建一个新的照片,我希望每次触摸都能完成,所以我在void Update()函数里面写了以下一行。
public Canvas cv;
public Image im;
我已经定义了上面的UI元素。
for (var i = 0; i < Input.touchCount; ++i)
{ Touch touch = Input.GetTouch(i);
if (touch.phase == TouchPhase.Began)
{
Instantiate(im, Input.GetTouch(i).position, Quaternion.identity).transform.SetParent(cv.transform, false);
}
}
当我用unity远程应用程序尝试时,我在点击点上方3-4个手指处拍摄照片,问题出在哪里?
Vector2 scaleSomething()
{
var screenPosition = Camera.main.WorldToScreenPoint(worldPosition);
var scaler = cv.GetComponentInParent<CanvasScaler>();
var guiScale = 1.0f;
if (Mathf.Approximately(scaler.matchWidthOrHeight, 0.0f))
guiScale = scaler.referenceResolution.x / (float) Screen.width;
else if (Mathf.Approximately(scaler.matchWidthOrHeight, 1.0f))
guiScale = scaler.referenceResolution.y / (float) Screen.height;
return new Vector2(
(screenPosition.x - (Screen.width* 0.5f)) * guiScale,
(screenPosition.y - (Screen.height* 0.5f)) * guiScale);
}
尝试在实例化后删除设置父级部分
编辑 当你将对象实例化为子元素时,它们会在局部空间被翻译成父元素。因为你的画布被拉伸了(在y上放大),你的子元素也在y上被放大,并且不在原位。