Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Assets\footprints.cs(5,20):错误CS0116:命名空间不能直接包含字段或方法等成员_C#_Unity3d_Namespaces - Fatal编程技术网

C# Assets\footprints.cs(5,20):错误CS0116:命名空间不能直接包含字段或方法等成员

C# Assets\footprints.cs(5,20):错误CS0116:命名空间不能直接包含字段或方法等成员,c#,unity3d,namespaces,C#,Unity3d,Namespaces,在为Unity创建足迹脚本时,就我面临的问题寻求帮助。 我从一些手册/指南中粘贴了这段代码(用C#)来设置足迹声音,但当我保存它并返回Unity时,出现了一个错误,如下所示: Assets\footprints.cs(5,20):错误CS0116:命名空间不能直接包含字段或方法等成员 我使用的是Unity 2019.4.17f1 我正在使用Microsoft Visual Studio代码2019 代码来自 代码如下: using System.Collections; using Syst

在为Unity创建足迹脚本时,就我面临的问题寻求帮助。 我从一些手册/指南中粘贴了这段代码(用C#)来设置足迹声音,但当我保存它并返回Unity时,出现了一个错误,如下所示:

Assets\footprints.cs(5,20):错误CS0116:命名空间不能直接包含字段或方法等成员

  • 我使用的是Unity 2019.4.17f1
  • 我正在使用Microsoft Visual Studio代码2019
  • 代码来自
代码如下:

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

public AudioClip[] footstepClips;
public AudioSource audioSource;

public float footstepThreshold;
public float footstepRate;
private float lastFootstepTime;

public CharacterController controller;

void Update ()
{
    if(controller.velocity.magnitude > footstepThreshold)
    {
        if(Time.time - lastFootstepTime > footstepRate)
        {
            lastFootstepTime = Time.time;
            audioSource.PlayOneShot(footstepClips[Random.Range(0, footstepClips.Length)]);
        }
    }
}

此外,我认为我从编码学位网站获得的代码已经过时。另外,如果这个帖子中有语法错误,那是因为我在夜间犯了这个错误,如果您认为这是一个错误,那么很抱歉。

您的代码不包含在类中。当您在unity中创建一个C#脚本时,它会自动为您提供类声明,以便您将代码与start和update函数一起放入

您需要在using语句下面和第一个变量声明上面添加行
public class footprint:monobhavior{
。不要忘记在文件
}

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

    public class Footstep : MonoBehaviour {
    
       public AudioClip[] footstepClips;
       public AudioSource audioSource;
    
       public float footstepThreshold;
       public float footstepRate;
       private float lastFootstepTime;
    
       public CharacterController controller;
    
       void Update ()
       {
           if(controller.velocity.magnitude > footstepThreshold)
           {
               if(Time.time - lastFootstepTime > footstepRate)
               {
                   lastFootstepTime = Time.time;
                   audioSource.PlayOneShot(footstepClips[Random.Range(0, footstepClips.Length)]);
               }
           }
       }
   }

有人帮帮我你需要把这些都写进课堂。。这是基本的c#您的类应该是
公共类footprint:monobhavior{…}
因为对于组件,脚本名称必须与类名匹配,才能在Unity中正确工作。我强烈建议您将
PlayerController
更改为
footprint
,否则,OP将直接出现Unity找不到的组件的下一个问题;)脚本和类名必须完全匹配,OP的脚本名为
footprint.cs
(请参阅有问题的错误)谢谢!我更新了。我去看了教程,这部分问题完全忘了。