You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中Screen Space - Overlay模式的2D Canvas如何实现缩放功能?

问题根因

你当前实现失效的核心原因是 Screen Space - Overlay 模式的Canvas渲染完全不依赖相机参数,你修改主相机的正交大小、位置都不会对这个模式下的Canvas显示产生任何影响,具体原因如下:

  • Screen Space - Overlay渲染模式下,Canvas会直接覆盖在屏幕最上层绘制,渲染计算完全以屏幕像素为基准,无视相机的投影、位置、尺寸参数,所以你脚本里修改Camera.main.orthographicSize、移动相机位置的逻辑对Canvas上的元素完全无效。
  • 你当前的脚本逻辑本身是针对世界空间Canvas或者非UI的2D游戏场景做缩放平移的,完全不适配Overlay模式的Canvas。
可行解决方案

你可以任选以下两种方案实现需求:

方案1:修改Canvas缩放实现效果(保留Screen Space - Overlay模式)

直接修改Canvas的整体缩放值,不用操作相机,参考代码如下:

public Canvas targetCanvas;
public float zoomOutMin = 0.5f;
public float zoomOutMax = 2f;
public float zoomSpeed = 0.01f;
Vector2 touchStart;
Vector3 canvasStartScale;

void Update()
{
    // 双指缩放逻辑
    if (Input.touchCount == 2)
    {
        Touch touchZero = Input.GetTouch(0);
        Touch touchOne = Input.GetTouch(1);

        Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
        Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;

        float prevMagnitude = (touchZeroPrevPos - touchOnePrevPos).magnitude;
        float currentMagnitude = (touchZero.position - touchOne.position).magnitude;

        float difference = currentMagnitude - prevMagnitude;
        float newScale = Mathf.Clamp(targetCanvas.transform.localScale.x + difference * zoomSpeed, zoomOutMin, zoomOutMax);
        targetCanvas.transform.localScale = Vector3.one * newScale;
    }
    // 鼠标滚轮调试用
    float scroll = Input.GetAxis("Mouse ScrollWheel");
    if (Mathf.Abs(scroll) > 0.001f)
    {
        float newScale = Mathf.Clamp(targetCanvas.transform.localScale.x + scroll * 10 * zoomSpeed, zoomOutMin, zoomOutMax);
        targetCanvas.transform.localScale = Vector3.one * newScale;
    }
}

使用前需要把你场景中的Canvas组件拖到脚本的targetCanvas字段完成赋值。

方案2:切换Canvas渲染模式

把Canvas的渲染模式改成Screen Space - Camera或者World Space,此时你原来的相机控制脚本就能生效,需要额外做基础配置:

  • 选择Screen Space - Camera的话要把主相机拖到Canvas的Render Camera字段里,调整Plane Distance参数适配显示层级即可。
  • 选择World Space的话需要手动调整Canvas的尺寸、位置适配相机视野。

内容的提问来源于stack exchange,提问作者Jigen Otsuki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:06:04