Unity3D-摄像机与屏幕适配的方法(摄像机可视宽度不变,高度变化)

1.正交模式(2D)

Camera组件的Projection为Orthographic即正交模式.
在这里插入图片描述

添加脚本,放入场景物体

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScreenInit : MonoBehaviour
{
    private void Awake()
    {      
        //1920/1080 是编辑模式下固定的屏幕宽度和屏幕高度,Screen.Height和Screen.Width是实际屏幕高度和实际屏幕宽度
        Camera.main.orthographicSize = Camera.main.orthographicSize * 1920 / 1080 * Screen.height / Screen.width;
    }
}

记得把Canvs Scaler上的UI Scale Mode 换成Screen With Screen Size
在这里插入图片描述

测试得知:如上公式会让摄像机可视宽度永远不会变化,而高度还是会变的,若需要高度不变、宽度变化的话,保持原样即可。也就是你不用看文章方法去做了,unity原本的方法就是高度永不变,宽度变化。

2.透视模式(3D)

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScreenInit : MonoBehaviour
{
    private void Awake()
    {
        //Camera.main.fieldOfView是用来设置摄像机视野的大小

        float targetHight = 1920.0f;
        if (1080*Screen.height>1920*Screen.width)
        {
            targetHight = 1080f * Screen.height / Screen.width;
        }
        Camera.main.fieldOfView *= (targetHight/1920.0f);
    }
}

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Unity中,你可以使用OnGUI函数在摄像机上绘制矩形。首先,在摄像机上创建一个脚本,然后在脚本中添加OnGUI函数。在OnGUI函数中,你可以使用GUI.DrawTexture函数绘制矩形。 下面是一个示例代码: ```c# using UnityEngine; public class DrawRectOnCamera : MonoBehaviour { public Texture2D rectTexture; public Rect rectToDraw; void OnGUI() { GUI.DrawTexture(rectToDraw, rectTexture); } } ``` 在上面的示例中,我们首先定义了一个Texture2D对象和一个Rect对象,分别表示要绘制的矩形的纹理和位置。然后在OnGUI函数中,我们使用GUI.DrawTexture函数绘制矩形。 请注意,OnGUI函数只能在摄像机上使用,因为它需要在摄像机上绘制GUI元素。如果你想在场景中绘制矩形,可以使用其他方法,如在场景中创建一个空对象并在其上添加一个脚本,在脚本中使用Graphics.DrawTexture函数绘制矩形。 ### 回答2: 在Unity中,可以通过以下几个步骤在摄像机上绘制矩形: 1. 创建一个空的游戏对象,命名为“Rectangle”或其他你喜欢的名称。 2. 将游戏对象的位置设置为摄像机的位置或在适当的位置上。 3. 添加一个新的脚本组件到游戏对象上,命名为“DrawRectangle”或其他你喜欢的名称。 4. 在DrawRectangle脚本中,定义一个矩形的宽度高度变量,并设置一个颜色变量来表示矩形的颜色。 5. 在OnDrawGizmosSelected函数中,使用Gizmos.DrawWireCube方法来绘制矩形。将摄像机的位置作为矩形的中心点,矩形的宽度高度作为参数传递给该方法。 6. 在OnDrawGizmosSelected函数中,使用Gizmos.color方法将矩形的颜色设置为预设的颜色变量。 7. 保存和运行脚本,然后在Unity编辑器中选择摄像机对象。 8. 在场景或游戏视图中,你将看到在摄像机上以矩形形式绘制的辅助线框。 这样,你就成功地在Unity中的摄像机上绘制了一个矩形。你可以根据自己的需要调整矩形的位置和大小,以及颜色等属性。请注意,这种绘制只是用于帮助你在编辑器中可视化矩形的位置和尺寸,并不会直接显示在游戏运行时。如果需要在游戏运行时显示矩形,可以使用其他方法来实现,例如创建一个矩形的纹理并将其渲染到屏幕上。 ### 回答3: 在Unity中,我们可以通过在摄像机上添加一个辅助脚本来绘制矩形。 首先,在Unity编辑器中为主摄像机创建一个空物体作为辅助脚本的父物体。 然后,创建一个新的C#脚本,并将其命名为"RectDrawer",将其附加到主摄像机所在的父物体上。 在RectDrawer脚本中,我们需要定义一个矩形的位置、大小和颜色等属性。我们可以使用OnDrawGizmosSelected函数来绘制矩形,并使其只在选择摄像机时可见。 ```c# using UnityEngine; public class RectDrawer : MonoBehaviour { public Vector2 position; public Vector2 size; public Color color = Color.red; private void OnDrawGizmosSelected() { // 绘制矩形边框 Gizmos.color = color; Gizmos.DrawWireCube(transform.position + (Vector3)position, (Vector3)size); } } ``` 在Unity编辑器中,我们可以为辅助脚本中的矩形属性指定位置、大小和颜色等,并在摄像机选中时即可看到绘制的矩形。 请注意,这个矩形只在编辑器中可见,并不会在游戏运行时显示。如果需要在游戏运行时显示矩形,可以将绘制矩形的逻辑添加到摄像机渲染的过程中,并使用定点和线段绘制矩形的顶点和边。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值