## **Cameras(摄像机)** 在GameMaker Studio 2中创建房间(room)时,您需要设置不同的视图端口(view port)和/或摄像机,以此来控制需要向玩家显示的内容。视图端口(view port)基本上是游戏世界中的一个小窗口,它用来向玩家展示房间(room)中的一部分,可以是按照缩放比例显示也可以是1:1显示,因此当你的游戏房间(room)尺寸大于显示尺寸时,它是必不可少的。摄像机用来确定每个视图端口(viewport)到底用来显示什么内容。 GameMaker Studio 2 允许您使用8个独立的视图端口(编号从0到7)和无线数量的摄像机,其中只有8个可以在任意时刻激活 - 每个可用的视图端口可以分配一个 - 尽管通常您只需要使用1-2个视图端口。摄像机可以同时显示同一房间的不同部分,它们可以随时激活或者取消激活,也可以随时指定视图端口,您可以使用摄像机绘制HUD(译注:Heads Up Display抬头显示界面,从飞机上继承过来的名词,国内更偏向于叫UI)或者分屏显示效果(译注:比如分屏合作或对抗的游戏),或者创建场景剪辑效果。从本质上来说,您在房间里放置一个摄像机,并确定该房间的视图(view)区域,然后这个视图(view)就会被绘制到视图端口(view port),要注意的是,视图窗口(view port)可以和摄像机的视图不同尺寸,如果视图端口和摄像机视野的大小不是1:1的话,您可以修改摄像机视图的比例。 注意注意!如果您是刚接触GMS,这里的摄像机(camera)、视图(view)和视图端口(view port),很容易把你搞懵逼,这里再次说明一下: * 摄像机(camera):摄像机就是房间内的一个点,通过设置位置、方向、视野和宽高比这些参数,来确定房间内的显示方式。 * 视图(view):基于摄像机的位置、投射和旋转,摄像机看到的东西 * 视图端口(view port):屏幕上的区域,用来显示摄像机看到的东西 ![](http://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/cameras%20and%20display/cameras/images/camera_example.png) 如果您要通过房间编辑器(Room Editor)添加摄像机,可以使用view_camera变量来取回摄像机的ID(camera ID)。您可以通过使用下面的函数来控制视图(view),如果需要的话您也可以销毁默认的摄像机,但是要为视图(view)指定一个新的摄像机,否则您会遇到不可预料的问题。在房间编辑器中添加到视图端口的摄像机的范围是全局的,这意味着它们在游戏开始时会被创建一次,当您进入每个房间时,它们会被设置为在房间编辑器中设置的值,所以您如果销毁任意房间中的默认摄像机,那它在所有房间中都不存在了。 在游戏中第一个房间的所有激活的视图端口的边界框的总面积确定了背景画布的大小(或者操作系统窗口的大小,MacOS\Ubuntu(Linux)\Windows),任何未被视图端口覆盖的区域都会默认使用窗口颜色进行绘制。如下图所示: ![](http://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/cameras%20and%20display/cameras/images/viewport_canvas.png) >注意:默认情况下,您需要在房间编辑器中选择“清除显示缓冲区”来显示颜色,而且只能使用函数window_set_colour()设置颜色。如果你没用这个函数的话,它将默认为黑色。 当您使用多台摄像机时要小心,因为每个设为可视的视图(view)都会调用一次所有实例的draw事件,所以如果在一个房间内有三个摄像机视图处于激活状态,draw事件就会每一个step运行三次(基本上就是执行三次),如果游戏规模较大或者复杂,可能会导致游戏很卡。 您可以从下面的不同部分找到所有可用函数的概述,但值得注意的是,其中一些功能需要设置和使用不同的矩阵,因此您可能需要按F1查看手册中Matrix Function的说明。另请注意,有几个room function可用于获取和设置摄像机并查看当前房间中的视图端口值(请参阅创建和更改房间 Creating And Changing Rooms)。