Unity报错CS0118:NavMeshAgent是命名空间却被当作类型使用
错误原因
你将类定义在了UnityStandardAssets.Characters.ThirdPerson.NavMeshAgent命名空间中,而Unity引擎的NavMeshAgent是属于UnityEngine命名空间的组件类型。这种命名重叠导致编译器把你代码里的NavMeshAgent识别为自定义命名空间,而非需要的组件类型,从而触发错误。
修复方法
- 修改命名空间:移除命名空间末尾的
NavMeshAgent层级,将命名空间改为UnityStandardAssets.Characters.ThirdPerson - 可选:显式指定命名空间:为代码中的
NavMeshAgent添加UnityEngine.前缀,彻底消除命名歧义
修复后的完整代码
using System; using UnityEngine; namespace UnityStandardAssets.Characters.ThirdPerson { [RequireComponent(typeof(UnityEngine.NavMeshAgent))] [RequireComponent(typeof(ThirdPersonCharacter))] public class AICharacterControl : MonoBehaviour { public UnityEngine.NavMeshAgent agent { get; private set; } public ThirdPersonCharacter character { get; private set; } public Transform target; private void Start() { agent = GetComponentInChildren<UnityEngine.NavMeshAgent>(); character = GetComponent<ThirdPersonCharacter>(); agent.updateRotation = false; agent.updatePosition = true; } private void Update() { if (target != null) { agent.SetDestination(target.position); character.Move(agent.desiredVelocity, false, false); } else { character.Move(Vector3.zero, false, false); } } public void SetTarget(Transform target) { this.target = target; } } }
内容的提问来源于stack exchange,提问作者Tong K
相关产品推荐
相关产品推荐

