Unity中WorldSpace画布Canvas全屏

using UnityEngine;

public class AutoResize : MonoBehaviour {
    public Camera cam;
    public Canvas canvas;
	
	// Update is called once per frame
	void Update () {
        //将画布放在相机前方的正中
        Vector3 vec1 = canvas.transform.position - cam.transform.position;
        Vector3 vec2 = Vector3.Project(vec1, cam.transform.forward);
        canvas.transform.position = cam.transform.position + vec2;

        //计算画布的宽高
        float planeDistance = Vector3.Distance(cam.transform.position, canvas.transform.position);
        float camHeight;
        float camWidth;
        if(cam.orthographic)
        {
            camHeight = cam.orthographicSize * 2.0f;
            camWidth = camHeight * cam.aspect;
        }
        else
        {
            camHeight = 2.0f * planeDistance * Mathf.Tan(cam.fieldOfView * 0.5f * Mathf.Deg2Rad);
            camWidth = camHeight * cam.aspect;
        }

        canvas.GetComponent<RectTransform>().sizeDelta = new Vector2(camWidth, camHeight);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值