Unity通俗易懂的讲解PPU(Pixel Per Unit)与Camera Size

目录

前言

Unity的一个单位

Camera Size

Pixel Per Unit的具体含义


前言

unity 2d中的sprite ,具有一个参数:Pixel Per Unit

初学者往往不知道这个代表什么意思,如何理解,怎么设置,这个在unity的美术素材的使用也是极为重要的基础知识。今天一文让你通俗易懂的彻底理解。

 

在讲Pixel Per Unit(每个单位所展示的像素量)之前就首先不得不讲Unity的一个单位,什么是Unity的一个单位?

Unity的一个单位

如下图所示,在Scene窗口中,可以看到那些格子,一个格子就代表一个单位。而我们创建一个默认的Square,若其scale均为1,则其就正好占据了一个单位。

 

Camera Size

Camera Size是什么?

其实可以理解为Camera的视野大小,在unity中如果把相机的投影模式视为正交,那么它的大小就代表屏幕高度一半有多少个unity的单位。

例如这里大小为1,就代表屏幕高度的一半为1个单位。(可以看到下面正好包含了两个单位为1的正方形)

同理:

Pixel Per Unit的具体含义

弄懂了上面的知识后现在回来看PPU是什么意思:

首先,不同的图片包含的像素量的大小不同:如下所示,每个图片的像素量的高度初始就不同

例如现在这里有一张像素为64x64的小狗

当我们将其放入unity中,

如果我们将其ppu设定为64,则可以发现这个图片占据了一个格子。

也就是说,PPU就代表的是一个unity的格子,会显示多少该图片的像素量

 

 如果设定PPU为32这意味着一个格子只展示32个像素的宽度,那么64x64的图片就可以被分成四份。

而下面的展示可以看到其ppu为32时,需要四个格子才能将64x64的图片完美展示出来。

同理,当期ppu为128时, 就代表每个格子会展示这个图片的128个像素单位,那么此时只需要四分之一个格子就可以展示完毕:

好了,如果你理解了上述所说的, 思考下面这个问题:

如果一个图的像素是1080x1080的,并且ppu是默认的100(unity初始会自动设置为100),那么这时候我们将size设置为___即可看到图片的全部内容。

答案:5.4

因为1080的像素,那么ppu为100,需要10.8个单位的格子。

而size为5.4,就可以展示10.8个格子的大小。

欢迎关注我,这里是晴夏,带你分享更多unity知识。

 

 

 

 

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在Unity中,可以使用代码来更改摄像机的投影大小(orthographic size)。以下是一些示例代码,可以在脚本中使用: ```csharp // 获取主摄像机 Camera mainCamera = Camera.main; // 更改摄像机投影大小为 5 mainCamera.orthographicSize = 5f; ``` ```csharp // 更改摄像机投影大小为 10,持续1秒 IEnumerator ChangeCameraSize() { Camera mainCamera = Camera.main; float originalSize = mainCamera.orthographicSize; float newSize = 10f; float duration = 1f; float timeElapsed = 0f; while (timeElapsed < duration) { timeElapsed += Time.deltaTime; float t = Mathf.Clamp01(timeElapsed / duration); mainCamera.orthographicSize = Mathf.Lerp(originalSize, newSize, t); yield return null; } } ``` 这些示例代码将更改当前场景中的主摄像机的投影大小。第一个示例只是将投影大小更改为5。第二个示例使用协程来实现平滑的过渡,从当前大小到10,持续1秒。您可以根据自己的需要修改这些代码,例如更改持续时间、更改目标大小等。 ### 回答2: 在Unity中,我们可以使用代码来改变相机的投影模式以及视野大小。 首先,我们需要获取相机的引用。这可以通过以下代码片段来实现: ```csharp Camera mainCamera = Camera.main; // 获取主相机引用 ``` 然后,我们可以使用以下代码来更改相机的投影模式: ```csharp mainCamera.orthographic = false; // 设置为透视投影 ``` 如果我们想要将相机的投影模式更改为正交投影,我们将上述代码修改为: ```csharp mainCamera.orthographic = true; // 设置为正交投影 ``` 接下来,我们可以使用以下代码来更改相机的视野大小: ```csharp mainCamera.orthographicSize = newSize; // 设置新的视野大小 ``` 在这里,`newSize`是一个代表新视野大小的浮点数。请注意,在正交投影模式下,视野大小代表相机视野的高度的一半,因此调整此值将直接影响到视野的范围。 最后,我们需要注意的是,这些代码应该放在合适的位置触发。例如,在`Start`或`Update`函数中,或者由其他逻辑来触发。 ### 回答3: Unity中可以通过代码来改变Camera的Projection下的Size属性,通过调整Size来改变摄像机的视野范围。以下是一个示例代码: ```csharp using UnityEngine; public class ChangeCameraSize : MonoBehaviour { public Camera mainCamera; // 需要修改的摄像机 public float newSize = 5f; // 新的Size值 void Update() { if (Input.GetKeyDown(KeyCode.Space)) { mainCamera.orthographicSize = newSize; // 设置摄像机的orthographicSize为新的Size值 } } } ``` 在上述代码中,我们首先需要在脚本中声明一个Camera类型的变量`mainCamera`,并在Unity编辑器中将需要修改的摄像机拖拽到该变量对应的位置。我们还可以通过修改`newSize`变量来确定新的Size值。 在Update函数中,我们通过检测按下空格键来触发Size的改变。当按下空格键时,将`mainCamera.orthographicSize`赋值为`newSize`,从而改变摄像机的视野范围。 值得注意的是,这段代码假设我们想要修改的是一个正交摄像机(orthographic camera)。如果想要修改的是一个透视摄像机(perspective camera),则应该使用`mainCamera.fieldOfView`属性来改变视野角度。 希望以上回答对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值