【问题标题】: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:命名空间不能直接包含字段或方法等成员

代码如下:

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 中正常工作

标签: c# unity3d namespaces


【解决方案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(请参阅有问题的错误)
  • 谢谢!我更新了。我去看了教程,这里的那部分问题完全让我忘记了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-31
相关资源
最近更新 更多