第一人称和第三人称之间的相机切换。显示错误
Posted
技术标签:
【中文标题】第一人称和第三人称之间的相机切换。显示错误【英文标题】:Camera switch between First and third person. Showing error 【发布时间】:2021-11-19 10:16:58 【问题描述】:我正在尝试在第一人称和第三人称之间切换相机。代码如下:
[SerializeField]
private Camera ThirdPersonCam;
private KeyCode switchKey;
//Assingables
public Transform playerCam;
public Transform orientation;
private void Update()
MyInput();
Look();
if (Input.GetKeyDown(switchKey))
playerCam.enabled = !playerCam.enabled;
ThirdPersonCam.enabled = !ThirdPersonCam.enabled;
但是,在这一行playerCam.enabled = !playerCam.enabled;
中,它显示了这个错误:
'Transform' does not contain a definition for 'enabled' and no accessible extension method 'enabled' accepting a first argument of type 'Transform' could be found (are you missing a using directive or an assembly reference?
但在它下面的行中,它没有显示。我很困惑为什么会这样,enabled
是Transform
的定义。谁能帮我解决一下。
谢谢。
【问题讨论】:
正确。转换没有启用的属性。游戏对象可以。要么保持引用点头游戏对象或调整你的代码告诉游戏对象启用 【参考方案1】:正如它所说,Transform 没有定义enabled
。您应该将变量类型从 Transform
更改为 Camera
,因为您尝试访问相机而不是位置。
所以不是这个,
private Transform playerCam;
改成这个;
private Camera playerCam;
【讨论】:
【参考方案2】:据我所知,文档中没有“启用”Transform:https://docs.unity3d.com/ScriptReference/Transform.html 如果您想通过引用其转换来反转活动状态(也称为启用),请使用:
playerCam.gameObject.SetActive(!playerCam.gameObject.activeSelf)
由于这有点令人费解,因此保留对游戏对象本身的引用而不是它们的变换通常是有意义的。
【讨论】:
【参考方案3】:您已将全局/可序列化 playerCam 定义为转换类型,因此您无法启用/禁用它们。 把类型改成Camera就好了
[SerializeField]
private Camera ThirdPersonCam;
private KeyCode switchKey;
//Assingables
public Camera playerCam;
public Transform orientation;
【讨论】:
以上是关于第一人称和第三人称之间的相机切换。显示错误的主要内容,如果未能解决你的问题,请参考以下文章