“命名空间不能直接包含字段或方法等成员”

我正在尝试使用这个代码为 NET. 反射器使用 Reflexil。我正在尝试替换这个代码:

if(Input.GetKeyDown(KeyCode.Keypad5)) {
int i = 0;
Character localPlayer = PlayerClient.GetLocalPlayer().controllable.GetComponent<Character>();
foreach (UnityEngine.Object obj2 in UnityEngine.Object.FindObjectsOfType(typeof(LootableObject)))
{
if (obj2 != null)
{
i++;
LootableObject loot = (LootableObject) obj2;
Debug.Log("Loot "+i+": "+loot.transform.position.ToString());
CCMotor ccmotor = localPlayer.ccmotor;
if(ccmotor != null && tpPos1 != Vector3.zero) {
ccmotor.Teleport(loot.transform.position);
Notice.Popup("", "Teleported to "+loot.name, 1.5f);
}
break;
}
}

}

但是当我尝试编译时它给了我一个错误:

Line: 1 Column: 1 Error Number: CS0116  Error Message: "A namespace does not directly contain members such as fields or methods"

我想这是联合密码。我没那么有经验。有人能帮我修一下吗?还是告诉我该怎么做?谢谢!

327319 次浏览

您显示的代码片段似乎并不直接导致错误。

这就是导致错误的原因:

namespace MyNameSpace
{
int i; <-- THIS NEEDS TO BE INSIDE THE CLASS


class MyClass
{
...
}
}

如果您没有立即看到什么是“外”的类,这可能是由于错位或额外的结束括号(s) }