Unity3D -- 获取游戏屏幕的宽高

这里要用到一个摄像机函数Camera.ViewportToWorldPoint, Unity官方对其定义为:
Camera.ViewportToWorldPoint 视窗转世界位置
function ViewportToWorldPoint (position : Vector3) : Vector3

Description描述

Transforms position from viewport space into world space.

从视窗空间到世界空间的变换位置。

Viewport space is normalized and relative to the camera. The bottom-left of the camera is (0,0); the top-right is (1,1). The z position is in world units from the camera.

视口空间是归一化的并相对于相机的,相机的左下为(0,0);右上是(1,1);Z的位置是以世界单位衡量的到相机的距离。

Note that it transforms a x-y screen position, into a x-y-z position in 3D space.

请注意它是变换一个x-y屏幕位置到一个3D空间的x-y-z位置。

You provide the function with a vector where the x-y components of the vector are the screen coordinates and the z component is the distance of the resulting plane from the camera.

这个函数带有在屏幕坐标的x-y组件向量,并且z组件是在从相机产生的平面的距离。

看了官方文档,现在我们知道怎么获取屏幕的实际宽高,下面是示例代码:

    private float width;
    private float height;

    void SetBasicValues(){

        float leftBorder;
        float rightBorder;
        float topBorder;
        float downBorder;
        //the up right corner
        Vector3 cornerPos=Camera.main.ViewportToWorldPoint(new Vector3(1f,1f,Mathf.Abs(Camera.main.transform.position.z)));

        leftBorder=Camera.main.transform.position.x-(cornerPos.x-Camera.main.transform.position.x);
        rightBorder=cornerPos.x;
        topBorder=cornerPos.y;
        downBorder=Camera.main.transform.position.y-(cornerPos.y-Camera.main.transform.position.y);

        width=rightBorder-leftBorder;
        height=topBorder-downBorder;
    }

得到的width与height就是屏幕宽高,代码的含义上面已经说的很清楚了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值