Unity3d 为什么可以';我不能缩放我的二维正字法游戏吗?
我看了几段视频并阅读了一些帖子,这些视频和帖子表明我应该能够通过更改主摄像头的尺寸参数(Unity 2D游戏,正交投影)在游戏期间缩放摄像头视图。这样做会放大和缩小场景视图,但我在“检查器”中的任何位置所做的任何更改都不会更改游戏视图 有人能提供建议吗?谢谢Unity3d 为什么可以';我不能缩放我的二维正字法游戏吗?,unity3d,Unity3d,我看了几段视频并阅读了一些帖子,这些视频和帖子表明我应该能够通过更改主摄像头的尺寸参数(Unity 2D游戏,正交投影)在游戏期间缩放摄像头视图。这样做会放大和缩小场景视图,但我在“检查器”中的任何位置所做的任何更改都不会更改游戏视图 有人能提供建议吗?谢谢 正交大小定义了相机的观看体积,它将仅缩放由其渲染的元素。看起来您正试图在画布上缩放,但UI元素是在整个场景的顶部渲染的 要放大和缩小,您可以: 将画布渲染模式设置为世界空间,然后将其放置在相机前面 使用可以放大画布的脚本,请查看以下内容:
正交大小定义了相机的观看体积,它将仅缩放由其渲染的元素。看起来您正试图在画布上缩放,但UI元素是在整个场景的顶部渲染的 要放大和缩小,您可以:
公共类PinchZoom:单行为
{
公共画布;//画布
public float zoomSpeed=0.5f;//画布比例因子的变化率
无效更新()
{
//如果设备上有两次触摸。。。
如果(Input.touchCount==2)
{
//储存两种接触。
Touch touchZero=Input.GetTouch(0);
Touch Touch one=Input.GetTouch(1);
//在每个触摸的前一帧中找到位置。
Vector2 touchZeroPrevPos=touchZero.position-touchZero.deltaPosition;
Vector2 touchOnePrevPos=touchOne.position-touchOne.deltaPosition;
//查找每个帧中触摸之间向量的大小(距离)。
浮点prevTouchDeltaMag=(touchZeroPrevPos-touchOnePrevPos).magnity;
float-touchDeltaMag=(touchZero.position-touchOne.position)。幅值;
//找出每帧之间距离的差异。
浮点增量差值=prevTouchDeltaMag-touchDeltaMag;
//…根据触摸之间距离的变化更改画布大小。
canvas.scaleFactor-=DeltaMagniteDiff*缩放速度;
//确保画布大小永远不会低于0.1
canvas.scaleFactor=Mathf.Max(canvas.scaleFactor,0.1f);
}
}
}
我希望这对你有帮助 你的游戏是完全在画布上制作的吗?
你的游戏是完全在画布上制作的吗?
根据层次结构,似乎是这样。在这种情况下@RT2010,你必须调整canvascaler
组件的设置,该组件连接到你的Canvas\u游戏和Canvas\u面板
你们真是太棒了!我所要做的就是改变画布的渲染模式,我的收缩/缩放就像一个冠军。这给我提出了一个问题。这是我的第一个团结项目。我想我们把UI元素放在画布上,然后相机渲染出来显示——就像艺术家在画布上画画然后用相机拍照一样。(你不能凭空作画。)从这次讨论来看,似乎我的范式错了。有人能澄清一下吗(或者给我指一个可以澄清的地方)?非常感谢@LorenzoGoldoni请尽可能在此处包含解决方案,而不是仅参考外部页面。因此,如果外部页面决定关闭或删除内容,它在此处仍然可用;)@RT2010有几种不同的画布渲染模式。世界空间如您所述工作,但其他空间“连接”到相机,无论您的相机变焦、位置、旋转或视野如何,都会显示相同的内容。例如,在制作FPS游戏的覆盖图时,这非常有用。@RT2010正如Louis所说,每当您想要绘制非diegetic元素时,您都会使用屏幕空间覆盖画布,因此不在相机上下文中。这些UI元素可以自由地从游戏的虚构中完全移除。非diegetic UIs可以代表生命和弹药,或者像魔兽世界中的热棒一样。非Diegetic UI通常以二维表示。另一方面,Diegetic UI(世界空间)存在于游戏世界中,而不是叠加在游戏上,是游戏虚构的一部分。如果你想阅读更多内容,请看一看,你一定要查看Unity的渲染层@德胡戈:谢谢你指出这一点,我刚刚开始回馈社区!!