"命名空间不能直接包含Net.Reflector中的成员,如字段或方法"

use*_*732 54 c# keycode button unity-game-engine reflexil

我试图将此代码用于NET.reflector.使用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; 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

}

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

Line: 1 Column: 1 Error Number: CS0116  Error Message: "A namespace does not directly contain members such as fields or methods"
Run Code Online (Sandbox Code Playgroud)

我认为这是Unity代码.我不是那么有经验的.任何人都能解决这个问题吗?或者告诉我该怎么做?谢谢.

G. *_*nev 105

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

这是你如何导致错误的原因:

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

   class MyClass
   {
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

如果您没有立即看到课程"外部",这可能是由于错位或额外的关闭括号}.

  • 谢谢,只需要一个提示,无论是否是代码。谢谢! (2认同)
  • 这很有用,因为它使我“看到”类的结束括号位于方法的开头之上。我刚刚开始使用Visual Studio 2017,它会自动添加两个括号,特别是在开口旁边添加右括号-我不习惯(在使用VS 2008多年之后),甚至没有注意到我不是在类内部编写方法! (2认同)