繁体   English   中英

为什么统一给我关于 IEnumerator 的错误

[英]Why does unity gives me error about IEnumerator

您好,我对此有疑问,它是一个包含破折号的移动脚本,当我运行游戏时,我收到此错误错误 CS0138:“使用命名空间”指令只能应用于命名空间; 'IEnumerator' 是一种类型而不是命名空间。 考虑一个“使用静态”指令,而不是我不知道为什么,如果有人可以帮忙的话。

using System.Collections.Generic;
using UnityEngine;
using System.Collections.IEnumerator;
using static UnityEngine.Random;

public class Character2DController : MonoBehaviour
{
    public float MovementSpeed = 6;
    public float JumpForce = 8;
    public Animator animator;
    [SerializeField] Rigidbody2D _rigidbody;
 
    //dash
    public float dashDistance = 15f;
    bool isDashing;
    float doubleTapTime;
    KeyCode lastKeyCode;
    

   private void Start()
    {
        _rigidbody = GetComponent<Rigidbody2D>();
    }

   
   private void Update()
    {
        

         
      var movement = Input.GetAxis ("Horizontal");
      transform.position += new Vector3(movement,0,0) * Time.deltaTime * MovementSpeed;

    animator.SetFloat("Speed", Mathf.Abs(movement));


      if (!Mathf.Approximately(0, movement)){
      transform.rotation = movement > 0 ? Quaternion.Euler(0, 180, 0) : Quaternion.identity;
      }

      if (Input.GetButtonDown("Jump") && Mathf.Abs(_rigidbody.velocity.y) < 0.011)
      {
          _rigidbody.AddForce(new Vector2(0, JumpForce), ForceMode2D.Impulse);

      }
     
    if (Mathf.Abs(_rigidbody.velocity.y) > 0.000000001)
    {
        animator.SetFloat("jump", 2);
    }
  
    else if  (_rigidbody.velocity.y < 0.011){
        animator.SetFloat("jump", 1);}
    //dashing left
    if (Input.GetKeyDown(KeyCode.A)){
        if(doubleTapTime > Time.time && lastKeyCode == KeyCode.A){
            StartCoroutine(Dash(-1f));
        } else { doubleTapTime = Time.time + 0.5f; 
        }
       
        lastKeyCode = KeyCode.A;

    }
//dashing right
    if (Input.GetKeyDown(KeyCode.D)){
        if(doubleTapTime > Time.time && lastKeyCode == KeyCode.D){
            StartCoroutine(Dash(1f));
        } else { doubleTapTime = Time.time + 0.5f; 
        }
       
        lastKeyCode = KeyCode.D;

    }
 void FixedUpdate(){

     if(!isDashing) {
     _rigidbody.velocity = new Vector2(movement * MovementSpeed, _rigidbody.velocity.y);
   }
}
    
    iEnumerator Dash (float direction){
        isDashing = true;
        _rigidbody.velocity = new Vector2(_rigidbody.velocity.x, 0f);
        _rigidbody.AddForce(new Vector2(dashDistance * direction, 0f), ForceMode2D.Impulse);
        float gravity = _rigidbody.gravityScale;
        _rigidbody.gravityScale = 0;
        yield return new WaitForSeconds(0.4f);
        isDashing = false;
        _rigidbody.gravityScale = gravity;


    }
    
    }
}

问题是 IEnumerator 是一种类型,例如 List 是你不写的类型。

using System.Collections.Generic.List;

你也不会写

using System.Collections.List;

你会改为写

using System.Collections.Generic;

然后,您可以在代码中使用列表类型,而无需写出整个内容。 IEnumerator 在“使用 System.Collections;” 命名空间。 因此,您可以将其添加到顶部,然后像使用 List 类型一样使用 IEnumerator。

此外,当您将命名空间更改为。

using System.Collections;

我还要注意你有一个错字,它写成 iEnumerator 应该是 IEnumerator。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM