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

Unity创建Camera列表报错:无法将Camera[]转换为Camera

问题描述

要制作一个相机列表脚本,实现类似《玩具熊的五夜后宫》的多相机自由切换功能,后续支持添加更多相机,因此选择用List<Camera>而非数组。编写脚本时出现编译错误:

Argument 1: cannot convert from 'UnityEngine.Camera[]' to 'UnityEngine.Camera' [Assembly-CSharp]

原代码如下:

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

public class CameraList : MonoBehaviour
{
    public List <Camera> _cameras = new List <Camera>();

// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
    _cameras.Add(Camera.main);

    _cameras.Add(FindObjectsOfType<Camera>());

}
}
错误原因

FindObjectsOfType<Camera>()方法返回的是Camera数组(Camera[]),而List<T>.Add()方法只能添加单个T类型元素,直接把数组传给Add就会出现类型不匹配的错误。另外原代码在Update里执行添加操作,会每帧重复往列表里加相机,导致列表快速膨胀,逻辑上也不合理。

修复方案
  1. 用List<T>.AddRange()方法一次性添加数组里的所有相机元素,该方法支持传入IEnumerable类型参数(数组实现了IEnumerable)。
  2. 将相机初始化逻辑移到Start()方法中,只执行一次,避免重复添加。
  3. 可添加去重逻辑,防止同一相机被多次加入列表。

修正后的代码:

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

public class CameraList : MonoBehaviour
{
    public List<Camera> _cameras = new List<Camera>();

    void Start()
    {
        // 获取场景中所有相机
        Camera[] allCameras = FindObjectsOfType<Camera>();
        // 一次性添加所有相机到列表
        _cameras.AddRange(allCameras);

        // 可选:确保Camera.main在列表中且不重复
        if (!_cameras.Contains(Camera.main))
        {
            _cameras.Add(Camera.main);
        }
    }

    // 示例:相机切换方法,传入索引切换到对应相机
    public void SwitchCamera(int cameraIndex)
    {
        if (cameraIndex >= 0 && cameraIndex < _cameras.Count)
        {
            // 先禁用所有相机
            foreach (Camera cam in _cameras)
            {
                cam.enabled = false;
            }
            // 启用目标相机
            _cameras[cameraIndex].enabled = true;
        }
    }
}
补充说明
  • 后续要添加新相机时,直接调用_cameras.Add(newCamera)即可,确保传入的是单个Camera对象。
  • 切换相机时,记得先禁用当前激活的相机,再启用目标相机,避免多个相机同时渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:45:24