不能将源类型 'UnityEngine.BoxCollider[]' 转换为目标类型 'System.Collections.Generic.List<UnityEngine.Collider>'
时间: 2024-09-10 09:09:14 浏览: 40
使用Unity开发简单的2D游戏教程
这个错误提示表示你在尝试将一个数组类型 `UnityEngine.BoxCollider[]` 转换成泛型集合类型 `System.Collections.Generic.List<UnityEngine.Collider>`,这两个类型的元素类型虽然都是 `UnityEngine.Collider`,但是底层实现和操作方式并不完全兼容。
在C#中,当你从一个特定类型的数组转换到另一个类型时,尤其是不同类型的容器类型,如果原始类型不是目标类型的子类型,转换通常是不允许的。在这个例子中,`BoxCollider` 类型虽然是 `Collider` 的子类型,但数组本身并不是 `List<T>` 的实例。
解决这个问题的一般做法是明确地创建一个新的 `List<BoxCollider>` 或者直接处理数组,而不是试图转换整个数组。如果你需要将多个 BoxCollider 存储在一个列表中,你应该做如下操作:
```csharp
BoxCollider[] boxCollidersArray = GetBoxColliders(); // 获取BoxCollider数组
List<BoxCollider> boxColliderList = new List<BoxCollider>(boxCollidersArray);
```
或者,如果你只是想将BoxCollider对象添加到非特定类型的列表中,可以在添加时进行类型转换:
```csharp
List<UnityEngine.Collider> collidersList = new List<UnityEngine.Collider>();
collidersList.AddRange(boxCollidersArray);
```
阅读全文