Unity中FindGameObjectsWithTag添加敌人到List报CS1503错误求助
错误原因
GameObject.FindGameObjectsWithTag("drap") 的返回值是 GameObject[](游戏对象数组),而 List<GameObject>.Add() 方法仅支持传入单个 GameObject 类型参数,类型不匹配导致CS1503编译错误。
解决方案
方案1:批量添加(最简洁)
直接使用List提供的AddRange()方法,一次性把数组内所有匹配标签的对象加入列表,无需手动遍历:
List<GameObject> _enemies = new List<GameObject>(); _enemies.AddRange(GameObject.FindGameObjectsWithTag("drap"));
方案2:遍历逐个添加(适合需要额外校验的场景)
如果需要在加入列表前对对象做筛选(比如判断是否激活、是否挂载指定脚本),可以先接收返回的数组,遍历后逐个添加:
List<GameObject> _enemies = new List<GameObject>(); GameObject[] findResult = GameObject.FindGameObjectsWithTag("drap"); foreach (GameObject obj in findResult) { // 可按需添加筛选逻辑,例:只添加激活状态的对象 if (obj.activeSelf) { _enemies.Add(obj); } }
注意:FindGameObjectsWithTag 仅会检索场景中处于激活状态、标签完全匹配的对象,初始禁用的对象不会被该方法捕获。
内容的提问来源于stack exchange,提问作者Kajzera
相关产品推荐
相关产品推荐

