You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SetActive()方法正确控制多个Unity相机的启用与禁用?

问题

我有一个可正常运行的Unity脚本(代码如下),原本通过Camera组件的enabled属性控制相机的启用与禁用。现在需要改用SetActive()方法来完全启用/禁用相机,但将代码中的GetComponent<Camera>().enabled = true;修改为SetActive(true)后出现了CS1061错误,请问该如何正确实现?

原代码

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

public class Interactive_map : MonoBehaviour
{
    
    public Camera[] cameras;
    
    void Start()
    {
        cameras[0].GetComponent<Camera>().enabled = true;                
    }
    
    public void TriggerClicked(int cam)
    {        
        for (int i = 0; i < cameras.Length; i++)
        {
            cameras[i].GetComponent<Camera>().enabled = false;
        }

        cameras[cam].GetComponent<Camera>().enabled = true;          
    }
}

错误信息

Assets\Scripts\Interactive_map.cs(13,20): 错误 CS1061: “Camera”不包含“SetActive”的定义,并且找不到可接受类型为“Camera”的第一个参数的可访问扩展方法“SetActive”(是否缺少 using 指令或程序集引用?)

解决方法

错误原因

SetActive()是GameObject类的方法,作用是启用/禁用整个游戏对象,而非Camera组件的方法。直接调用Camera实例的SetActive(),自然会触发“Camera无该方法”的错误。

修改步骤

  1. 你的cameras数组已经存储了Camera组件的引用,原代码里的GetComponent<Camera>()属于冗余代码,完全可以省略。
  2. 通过Camera组件的gameObject属性获取它所在的游戏对象,再调用SetActive()方法。

修改后的代码

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

public class Interactive_map : MonoBehaviour
{
    
    public Camera[] cameras;
    
    void Start()
    {
        // 启用第一个相机所在的游戏对象
        cameras[0].gameObject.SetActive(true);                
    }
    
    public void TriggerClicked(int cam)
    {        
        for (int i = 0; i < cameras.Length; i++)
        {
            // 禁用所有相机所在的游戏对象
            cameras[i].gameObject.SetActive(false);
        }

        // 启用指定索引的相机所在的游戏对象
        cameras[cam].gameObject.SetActive(true);          
    }
}

补充说明

  • SetActive(false)会完全禁用整个游戏对象,包括它身上的所有组件;而Camera.enabled = false仅禁用Camera组件本身,游戏对象仍处于活跃状态,按需选择即可。
  • 原代码中cameras[i].GetComponent<Camera>()完全多余,因为cameras[i]本身就是Camera类型,直接用cameras[i].enabled即可控制组件开关。

内容的提问来源于stack exchange,提问作者Roborock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:48:23