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

Posted

技术标签:

【中文标题】Assets\\Footsteps.cs(5,20):错误 CS0116:命名空间不能直接包含字段或方法等成员 [重复]【英文标题】:Assets\Footsteps.cs(5,20): error CS0116: A namespace cannot directly contain members such as fields or methods [duplicate]Assets\Footsteps.cs(5,20):错误 CS0116:命名空间不能直接包含字段或方法等成员 [重复] 【发布时间】:2021-01-17 09:19:12 【问题描述】:

就我在为 Unity 创建足迹脚本时遇到的问题寻求帮助。 我从一些关于如何设置脚步声的手册/指南中粘贴了这段代码(在 C# 中),但是当我保存它并返回 Unity 时,会发生错误,如下所示:

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

我正在使用 Unity 2019.4.17f1。 我正在使用 Microsoft Visual Studio Code 2019。 代码来自https://coding.degree/unity-audio-tutorial/#Footstep_Sounds

代码如下:

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)]);
        
    

另外,我认为我从编码学位网站获得的代码已经过时了。另外,如果这个帖子中有任何语法错误是因为我在夜间犯了这个错误,如果你认为这是一个错误,我们深表歉意。

【问题讨论】:

请有人帮帮我 您需要将所有内容都包装在一个 class 中......这是基本的 c# 您的类应该是public class Footstep : MonoBehaviour ... ,因为对于组件,脚本名称必须与类名称匹配才能在 Unity 中正常工作 【参考方案1】:

您的代码不包含在类中。当您统一创建 C# 脚本时,它会自动包含类声明,以便您将代码与启动和更新函数一起放入。

您需要在 using 语句下方和第一个变量声明上方添加行 public class Footstep : MonoBehaviour 。不要忘记在文件末尾添加一个右花括号

    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)]);
               
           
       
   

【讨论】:

我强烈建议您将 PlayerController 更改为 Footstep,否则 OP 将直接遇到 Unity 找不到组件的下一个问题;) 脚本和类名必须与 OP 完全匹配脚本称为Footstep.cs(请参阅有问题的错误) 谢谢!我更新了。我去看了教程,这里的那部分问题完全让我忘记了。

以上是关于Assets\Footsteps.cs(5,20):错误 CS0116:命名空间不能直接包含字段或方法等成员 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 MongoDB 聚合期间将字符串(格式:“1,5,20,22”)转换为整数数组( [1,5, 20, 22] )?

Mysql源码安装---mysql-5.5.20

IoT模组使用笔记:EC20BC20使用遇到的问题

编程计算1^1+2^2+3^3+4^4+5^5+……+20^20

2018.90.20列表

升级到 Kotlin 1.5.20 时出现谷歌地图问题